Asian American Quality of Life: Analysis

Author

Miguel Fudolig, Luke Cho, Lawrence Kim, Boya Liu

library(tidyverse)
library(ggplot2)
library(lavaan)
library(car)

Data set

This data set is from the 2015 Asian American Quality of Life survey. Participants are from Austin, Texas.

Input data set

qol <- read_csv("AAQoL.csv") |> mutate(across(where(is.character), ~as.factor(.x))) |> 
  mutate(`English Difficulties`=relevel(`English Difficulties`,ref="Not at all"),
         `English Speaking`=relevel(`English Speaking`,ref="Not at all"),
         Ethnicity = relevel(Ethnicity,ref="Chinese"))
New names:
Rows: 2609 Columns: 231
── Column specification
──────────────────────────────────────────────────────── Delimiter: "," chr
(190): Gender, Ethnicity, Marital Status, No One, Spouse, Children, Gran... dbl
(41): Survey ID, Age, Education Completed, Household Size, Grandparent,...
ℹ Use `spec()` to retrieve the full column specification for this data. ℹ
Specify the column types or set `show_col_types = FALSE` to quiet this message.
• `Other` -> `Other...17`
• `Other` -> `Other...89`
qol |> DT::datatable()
Warning in instance$preRenderHook(instance): It seems your data is too big for
client-side DataTables. You may consider server-side processing:
https://rstudio.github.io/DT/server.html

There are 2,609 responses, some with missing data.

Summary statistics

Gender

qol |> group_by(`Gender`) |> summarize(n=n()) |>
  mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 3 × 3
  Gender     n   pct
  <fct>  <int> <dbl>
1 Female  1425 54.6 
2 Male    1157 44.3 
3 <NA>      27  1.03

Age

qol |> filter(!is.na(Age)) |> summarize(age=mean(Age),SD=sd(Age),min=min(Age),max=max(Age))
# A tibble: 1 × 4
    age    SD   min   max
  <dbl> <dbl> <dbl> <dbl>
1  42.9  17.1    18    98
qol |> filter(Age >= 50) |> summarize (n=n())
# A tibble: 1 × 1
      n
  <int>
1   853
qol |> filter(Age >= 65) |> summarize (n=n(), median=quantile(Age,0.5))
# A tibble: 1 × 2
      n median
  <int>  <dbl>
1   382     71

Ethnicity

qol |> group_by(Ethnicity) |> summarize(n=n()) |> mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 7 × 3
  Ethnicity        n     pct
  <fct>        <int>   <dbl>
1 Chinese        639 24.5   
2 Asian Indian   574 22.0   
3 Vietnamese     514 19.7   
4 Korean         471 18.1   
5 Filipino       265 10.2   
6 Other          144  5.52  
7 <NA>             2  0.0767

Marital Status

qol |> group_by(`Marital Status`) |> summarize(n=n()) |> mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 5 × 3
  `Marital Status`          n    pct
  <fct>                 <int>  <dbl>
1 Married                1725 66.1  
2 Single                  726 27.8  
3 Living with a partner   110  4.22 
4 Other                    30  1.15 
5 <NA>                     18  0.690

Living Alone

qol |> mutate(alone=if_else(`No One`==0,"With Others","Alone")) |>
  mutate(alone=factor(alone, levels=c("Alone","With Others"))) |> 
  group_by(alone) |> 
  summarize(n=n()) |> 
  mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 3 × 3
  alone           n    pct
  <fct>       <int>  <dbl>
1 With Others  2392 91.7  
2 Alone         212  8.13 
3 <NA>            5  0.192

Religion

qol |> group_by(Religion) |> summarize(n=n()) |> mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 8 × 3
  Religion       n    pct
  <fct>      <int>  <dbl>
1 Protestant   645 24.7  
2 None         506 19.4  
3 Catholic     492 18.9  
4 Hindu        479 18.4  
5 Buddhist     350 13.4  
6 Muslim        68  2.61 
7 Other         47  1.80 
8 <NA>          22  0.843

Employment

qol |> mutate(`Full Time Employment`= ifelse(`Full Time Employment`==0,"No","Yes")) |> 
                group_by(`Full Time Employment`) |> summarize(n=n()) |>
  mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 3 × 3
  `Full Time Employment`     n    pct
  <chr>                  <int>  <dbl>
1 No                      1458 55.9  
2 Yes                     1144 43.8  
3 <NA>                       7  0.268

US Born

qol |>group_by(`US Born`) |> summarize(n=n()) |>
  mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 3 × 3
  `US Born`     n    pct
  <fct>     <int>  <dbl>
1 No         2353 90.2  
2 Yes         239  9.16 
3 <NA>         17  0.652

Duration

qol |> filter(!is.na(`Duration of Residency`)) |> 
  summarize(mean=mean(`Duration of Residency`), SD = sd(`Duration of Residency`))
# A tibble: 1 × 2
   mean    SD
  <dbl> <dbl>
1  15.6  12.7

English Speaking and Difficulty

Primary Speakers

1 = Primary Speaker, 0 = non-primary speaker

qol |> group_by(`Primary Language`) |> summarize(n=n()) |>
  mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 3 × 3
  `Primary Language`     n    pct
               <dbl> <int>  <dbl>
1                  1  1725 66.1  
2                  0   859 32.9  
3                 NA    25  0.958

Profiency

qol |> group_by(`English Speaking`) |> summarize(n=n()) |>
  mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 5 × 3
  `English Speaking`     n    pct
  <fct>              <int>  <dbl>
1 Very well            974 37.3  
2 Well                 808 31.0  
3 Not well             632 24.2  
4 Not at all           177  6.78 
5 <NA>                  18  0.690
qol |> group_by(`English Difficulties`) |> summarize(n=n()) |>
  mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 5 × 3
  `English Difficulties`     n   pct
  <fct>                  <int> <dbl>
1 Not at all               772 29.6 
2 Not much                 733 28.1 
3 Much                     549 21.0 
4 Very much                516 19.8 
5 <NA>                      39  1.49

Familiarity with America and Ethnic Origin

qol |> group_by(`Familiarity with America`) |> summarize(n=n()) |>
  mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 5 × 3
  `Familiarity with America`     n   pct
  <fct>                      <int> <dbl>
1 High                        1238 47.5 
2 Low                          721 27.6 
3 Very high                    498 19.1 
4 Very low                     123  4.71
5 <NA>                          29  1.11
qol |> group_by(`Familiarity with Ethnic Origin`) |> summarize(n=n()) |>
  mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 5 × 3
  `Familiarity with Ethnic Origin`     n   pct
  <fct>                            <int> <dbl>
1 High                              1369 52.5 
2 Very high                          864 33.1 
3 Low                                295 11.3 
4 Very low                            51  1.95
5 <NA>                                30  1.15

Comparing Familiarity with Ethnic Origin and America,

qol |> group_by(`Familiarity with Ethnic Origin`,`Familiarity with America`) |> summarize(n=n()) |>
  mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
`summarise()` has grouped output by 'Familiarity with Ethnic Origin'. You can
override using the `.groups` argument.
# A tibble: 23 × 4
# Groups:   Familiarity with Ethnic Origin [5]
   `Familiarity with Ethnic Origin` `Familiarity with America`     n   pct
   <fct>                            <fct>                      <int> <dbl>
 1 High                             High                         711 51.9 
 2 High                             Low                          431 31.5 
 3 Very high                        High                         422 48.8 
 4 Very high                        Very high                    250 28.9 
 5 Very high                        Low                          167 19.3 
 6 High                             Very high                    165 12.1 
 7 Low                              Low                          109 36.9 
 8 Low                              High                          91 30.8 
 9 Low                              Very high                     67 22.7 
10 High                             Very low                      51  3.73
# ℹ 13 more rows

Identifying to the ethnic community

qol |> group_by(`Identify Ethnically`) |> summarize(n=n()) |>
  mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 5 × 3
  `Identify Ethnically`     n   pct
  <fct>                 <int> <dbl>
1 Somewhat close         1211 46.4 
2 Very close             1039 39.8 
3 Not very close          293 11.2 
4 <NA>                     35  1.34
5 Not at all               31  1.19

Belonging to the ethnic community

qol |> group_by(`Belonging`) |> summarize(n=n()) |>
  mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 5 × 3
  Belonging         n   pct
  <fct>         <int> <dbl>
1 Somewhat       1255 48.1 
2 Very much       766 29.4 
3 Not very much   450 17.2 
4 Not at all       87  3.33
5 <NA>             51  1.95

Perceived Discrimination

qol |> group_by(Discrimination) |> summarize(n=n()) |>
  mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 3 × 3
  Discrimination     n   pct
           <dbl> <int> <dbl>
1              0  1598  61.2
2              1   694  26.6
3             NA   317  12.2

Income

qol <- qol |> mutate(Income_median = case_match(Income,"$0 - $9,999"~"Below",
                                         "$10,000 - $19,999" ~"Below",
                                         "$20,000 - $29,999"~"Below",
                                         "$30,000 - $39,999"~"Below",
                                         "$40,000 - $49,999"~"Below",
                                         "$50,000 - $59,999"~"Below",
                                         "$60,000 - $69,999"~"Above",
                                         "$70,000 and over"~"Above",
                                          .default=Income)) |> 
  mutate(Income_median = factor(Income_median, levels=c("Below","Above")))


qol |> group_by(Income) |> summarize(n=n()) |>
  mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 9 × 3
  Income                n   pct
  <fct>             <int> <dbl>
1 $70,000 and over    993 38.1 
2 $0 - $9,999         254  9.74
3 $30,000 - $39,999   207  7.93
4 $10,000 - $19,999   205  7.86
5 <NA>                203  7.78
6 $20,000 - $29,999   198  7.59
7 $60,000 - $69,999   190  7.28
8 $40,000 - $49,999   181  6.94
9 $50,000 - $59,999   178  6.82

We pool the following income levels as “Below”: 0-59,999, and “Above Median”: >60,000. This is based on Austin’s median income in 2015, which was found to be 67,195. (https://www.austinchamber.com/blog/02-21-2017-poverty-income#:~:text=Median%20household%20income%20is%20%2455%2C653,%2467%2C195%2C%20plus%20or%20minus%20%241%2C310.)

qol |> group_by(Income_median) |> summarize(n=n()) |>
  mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 3 × 3
  Income_median     n   pct
  <fct>         <int> <dbl>
1 Below          1223 46.9 
2 Above          1183 45.3 
3 <NA>            203  7.78

Analysis

ps <- function(x,dataset=qol){
  x <- enquo(x)
  dataset |> group_by(!!x) |> 
    summarize(n=n()) |> 
    mutate(pct=n/sum(n)*100)
}

Sources of Information summary statistics;

Family

ps(Family)
# A tibble: 4 × 3
  Family     n     pct
  <fct>  <int>   <dbl>
1 3          1  0.0383
2 No      1258 48.2   
3 Yes     1331 51.0   
4 <NA>      19  0.728 

Close Friends

ps(`Close Friend`)
# A tibble: 3 × 3
  `Close Friend`     n    pct
  <fct>          <int>  <dbl>
1 No              1623 62.2  
2 Yes              967 37.1  
3 <NA>              19  0.728

Acquaintances

ps(`Acquaintances`)
# A tibble: 3 × 3
  Acquaintances     n    pct
  <fct>         <int>  <dbl>
1 No             2141 82.1  
2 Yes             448 17.2  
3 <NA>             20  0.767

Health Professionals

ps(`Heal Professionals`)
# A tibble: 3 × 3
  `Heal Professionals`     n    pct
  <fct>                <int>  <dbl>
1 No                    1326 50.8  
2 Yes                   1264 48.4  
3 <NA>                    19  0.728

Mobile Apps

ps(`Mobile Apps`)
# A tibble: 3 × 3
  `Mobile Apps`     n    pct
  <fct>         <int>  <dbl>
1 No             2345 89.9  
2 Yes             245  9.39 
3 <NA>             19  0.728

Social Networks

ps(`Social Networks`)
# A tibble: 3 × 3
  `Social Networks`     n    pct
  <fct>             <int>  <dbl>
1 No                 2139 82.0  
2 Yes                 451 17.3  
3 <NA>                 19  0.728

Online Communities

ps(`Online Communities`)
# A tibble: 3 × 3
  `Online Communities`     n    pct
  <fct>                <int>  <dbl>
1 No                    2180 83.6  
2 Yes                    410 15.7  
3 <NA>                    19  0.728

Health Websites

ps(`Health Website`)
# A tibble: 3 × 3
  `Health Website`     n    pct
  <fct>            <int>  <dbl>
1 No                1490 57.1  
2 Yes               1100 42.2  
3 <NA>                19  0.728

Online sources

qol |> mutate(online_source = 1*(`Health Website`=="Yes" |
                                   `Online Communities`=="Yes" | 
                                   `Social Networks`=="Yes" | 
                                   `Email`=="Yes")) |> 
group_by(online_source) |> summarize(n=n()) |> mutate(pct=n/sum(n)*100)
# A tibble: 3 × 3
  online_source     n    pct
          <dbl> <int>  <dbl>
1             0  1083 41.5  
2             1  1507 57.8  
3            NA    19  0.728

Income

Source of Information association with income after controlling for ethnicity.

qol_1 <- qol |> select(Family,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.)) |> 
  filter(Family %in%c("Yes","No")) |>  
  mutate(Family=droplevels(Family)) 
glm(Family~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = Family ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                       0.9835     0.1686   5.835 5.39e-09 ***
Income$10,000 - $19,999          -0.4017     0.1978  -2.031 0.042272 *  
Income$20,000 - $29,999          -0.3867     0.2003  -1.931 0.053474 .  
Income$30,000 - $39,999          -0.5303     0.1964  -2.700 0.006926 ** 
Income$40,000 - $49,999          -0.6108     0.2035  -3.002 0.002683 ** 
Income$50,000 - $59,999          -0.4058     0.2040  -1.989 0.046698 *  
Income$60,000 - $69,999          -0.6197     0.1994  -3.107 0.001889 ** 
Income$70,000 and over           -0.5698     0.1488  -3.829 0.000129 ***
EthnicityAsian Indian            -0.3872     0.1262  -3.067 0.002161 ** 
EthnicityFilipino                -0.2240     0.1596  -1.403 0.160531    
EthnicityKorean                  -0.6323     0.1316  -4.804 1.56e-06 ***
EthnicityOther                   -0.8091     0.2004  -4.037 5.41e-05 ***
EthnicityVietnamese              -0.7411     0.1296  -5.719 1.07e-08 ***
`English Difficulties`Much        0.2193     0.1216   1.804 0.071241 .  
`English Difficulties`Not much   -0.1465     0.1121  -1.307 0.191244    
`English Difficulties`Very much  -0.2561     0.1226  -2.089 0.036718 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 3278.8  on 2365  degrees of freedom
Residual deviance: 3199.1  on 2350  degrees of freedom
AIC: 3231.1

Number of Fisher Scoring iterations: 4
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Family
                       LR Chisq Df Pr(>Chisq)    
Income                   17.865  7   0.012592 *  
Ethnicity                46.064  5  8.812e-09 ***
`English Difficulties`   15.163  3   0.001683 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Source of Information: Close Friends association with income after controlling for ethnicity.

qol_1 <- qol |> select(`Close Friend`,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(`Close Friend`~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Close Friend` ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     -0.13492    0.16582  -0.814   0.4158    
Income$10,000 - $19,999         -0.12475    0.19739  -0.632   0.5274    
Income$20,000 - $29,999         -0.15124    0.20182  -0.749   0.4536    
Income$30,000 - $39,999         -0.08579    0.19680  -0.436   0.6629    
Income$40,000 - $49,999         -0.43329    0.21103  -2.053   0.0401 *  
Income$50,000 - $59,999         -0.22828    0.20669  -1.104   0.2694    
Income$60,000 - $69,999         -0.46163    0.20487  -2.253   0.0242 *  
Income$70,000 and over          -0.20467    0.14675  -1.395   0.1631    
EthnicityAsian Indian            0.06090    0.12518   0.486   0.6266    
EthnicityFilipino               -0.71227    0.17234  -4.133 3.58e-05 ***
EthnicityKorean                 -0.20977    0.13206  -1.588   0.1122    
EthnicityOther                  -0.43573    0.20772  -2.098   0.0359 *  
EthnicityVietnamese             -0.62180    0.13420  -4.633 3.60e-06 ***
`English Difficulties`Much       0.15348    0.12416   1.236   0.2164    
`English Difficulties`Not much   0.12027    0.11561   1.040   0.2982    
`English Difficulties`Very much -0.06415    0.12739  -0.504   0.6146    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 3129.1  on 2366  degrees of freedom
Residual deviance: 3070.5  on 2351  degrees of freedom
AIC: 3102.5

Number of Fisher Scoring iterations: 4
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Close Friend
                       LR Chisq Df Pr(>Chisq)    
Income                    8.196  7     0.3156    
Ethnicity                43.365  5  3.116e-08 ***
`English Difficulties`    3.463  3     0.3256    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Source of Information: Acquaintances association with income after controlling for ethnicity.

qol_1 <- qol |> select(Acquaintances,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(Acquaintances~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = Acquaintances ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                 Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     -1.727617   0.220213  -7.845 4.32e-15 ***
Income$10,000 - $19,999          0.002513   0.249860   0.010   0.9920    
Income$20,000 - $29,999         -0.219677   0.261358  -0.841   0.4006    
Income$30,000 - $39,999          0.278483   0.237736   1.171   0.2414    
Income$40,000 - $49,999         -0.218013   0.265666  -0.821   0.4119    
Income$50,000 - $59,999         -0.195756   0.269101  -0.727   0.4670    
Income$60,000 - $69,999         -0.402071   0.273372  -1.471   0.1414    
Income$70,000 and over          -0.126052   0.190403  -0.662   0.5080    
EthnicityAsian Indian            0.002203   0.181318   0.012   0.9903    
EthnicityFilipino               -0.230734   0.244509  -0.944   0.3453    
EthnicityKorean                  0.932955   0.162692   5.734 9.78e-09 ***
EthnicityOther                  -0.624315   0.353287  -1.767   0.0772 .  
EthnicityVietnamese              0.363443   0.170930   2.126   0.0335 *  
`English Difficulties`Much       0.162197   0.155709   1.042   0.2976    
`English Difficulties`Not much   0.146756   0.144410   1.016   0.3095    
`English Difficulties`Very much -0.417090   0.186744  -2.233   0.0255 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2184.9  on 2365  degrees of freedom
Residual deviance: 2086.6  on 2350  degrees of freedom
AIC: 2118.6

Number of Fisher Scoring iterations: 5
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Acquaintances
                       LR Chisq Df Pr(>Chisq)    
Income                    8.626  7   0.280627    
Ethnicity                59.637  5  1.445e-11 ***
`English Difficulties`   11.434  3   0.009596 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Source of Information: Health professionals association with income after controlling for ethnicity.

qol_1 <- qol |> select(`Heal Professionals`,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(`Heal Professionals`~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Heal Professionals` ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                      0.10904    0.16694   0.653 0.513665    
Income$10,000 - $19,999         -0.07481    0.20036  -0.373 0.708884    
Income$20,000 - $29,999          0.13249    0.20079   0.660 0.509368    
Income$30,000 - $39,999          0.07333    0.19732   0.372 0.710180    
Income$40,000 - $49,999          0.17607    0.20424   0.862 0.388657    
Income$50,000 - $59,999          0.45907    0.20508   2.238 0.025192 *  
Income$60,000 - $69,999          0.26687    0.20027   1.333 0.182684    
Income$70,000 and over           0.67613    0.14883   4.543 5.55e-06 ***
EthnicityAsian Indian           -0.27207    0.12711  -2.140 0.032329 *  
EthnicityFilipino                0.63742    0.16931   3.765 0.000167 ***
EthnicityKorean                 -0.37748    0.13352  -2.827 0.004696 ** 
EthnicityOther                   0.21965    0.20171   1.089 0.276163    
EthnicityVietnamese              0.26730    0.12994   2.057 0.039681 *  
`English Difficulties`Much      -0.73555    0.12326  -5.968 2.41e-09 ***
`English Difficulties`Not much  -0.65957    0.11420  -5.776 7.67e-09 ***
`English Difficulties`Very much -0.49201    0.12455  -3.950 7.81e-05 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 3281.0  on 2366  degrees of freedom
Residual deviance: 3113.6  on 2351  degrees of freedom
AIC: 3145.6

Number of Fisher Scoring iterations: 4
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Heal Professionals
                       LR Chisq Df Pr(>Chisq)    
Income                   44.661  7  1.591e-07 ***
Ethnicity                51.853  5  5.782e-10 ***
`English Difficulties`   48.112  3  2.016e-10 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Income                 1.151798  7        1.010146
Ethnicity              1.223501  5        1.020376
`English Difficulties` 1.127631  3        1.020222

Source of Information: Mobile apps association with income after controlling for ethnicity.

qol_1 <- qol |> select(`Mobile Apps`,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(`Mobile Apps`~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Mobile Apps` ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     -2.85921    0.32318  -8.847  < 2e-16 ***
Income$10,000 - $19,999          0.60241    0.37201   1.619  0.10538    
Income$20,000 - $29,999          0.72075    0.36691   1.964  0.04948 *  
Income$30,000 - $39,999          0.45927    0.37707   1.218  0.22322    
Income$40,000 - $49,999          0.28894    0.40142   0.720  0.47164    
Income$50,000 - $59,999          0.90908    0.36056   2.521  0.01169 *  
Income$60,000 - $69,999          0.47782    0.38099   1.254  0.20978    
Income$70,000 and over           0.79709    0.29436   2.708  0.00677 ** 
EthnicityAsian Indian            0.31851    0.20435   1.559  0.11908    
EthnicityFilipino                0.07508    0.26590   0.282  0.77768    
EthnicityKorean                 -0.27606    0.24666  -1.119  0.26306    
EthnicityOther                   0.32946    0.30925   1.065  0.28672    
EthnicityVietnamese              0.35557    0.21170   1.680  0.09305 .  
`English Difficulties`Much      -0.25604    0.20512  -1.248  0.21194    
`English Difficulties`Not much  -0.26762    0.18968  -1.411  0.15827    
`English Difficulties`Very much  0.01876    0.18897   0.099  0.92090    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 1531.5  on 2366  degrees of freedom
Residual deviance: 1502.5  on 2351  degrees of freedom
AIC: 1534.5

Number of Fisher Scoring iterations: 5
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Mobile Apps
                       LR Chisq Df Pr(>Chisq)  
Income                  12.6505  7    0.08110 .
Ethnicity               10.1704  5    0.07055 .
`English Difficulties`   3.4183  3    0.33151  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Income                 1.165319  7        1.010988
Ethnicity              1.230721  5        1.020977
`English Difficulties` 1.153024  3        1.024015

Source of Information: Social Networks association with income after controlling for ethnicity.

qol_1 <- qol |> select(`Social Networks`,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(`Social Networks`~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Social Networks` ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                 Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     -1.589047   0.217577  -7.303 2.81e-13 ***
Income$10,000 - $19,999          0.106707   0.255094   0.418 0.675724    
Income$20,000 - $29,999          0.096830   0.261536   0.370 0.711207    
Income$30,000 - $39,999          0.142528   0.256827   0.555 0.578923    
Income$40,000 - $49,999         -0.120998   0.280671  -0.431 0.666394    
Income$50,000 - $59,999          0.009094   0.275843   0.033 0.973701    
Income$60,000 - $69,999         -0.166955   0.278613  -0.599 0.549015    
Income$70,000 and over           0.319814   0.193408   1.654 0.098215 .  
EthnicityAsian Indian           -0.482716   0.154548  -3.123 0.001788 ** 
EthnicityFilipino               -0.430369   0.204071  -2.109 0.034951 *  
EthnicityKorean                 -1.012321   0.183166  -5.527 3.26e-08 ***
EthnicityOther                  -0.549710   0.264634  -2.077 0.037779 *  
EthnicityVietnamese             -0.488170   0.160302  -3.045 0.002324 ** 
`English Difficulties`Much       0.410870   0.164032   2.505 0.012251 *  
`English Difficulties`Not much   0.534638   0.151162   3.537 0.000405 ***
`English Difficulties`Very much  0.443987   0.160570   2.765 0.005691 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2216.2  on 2366  degrees of freedom
Residual deviance: 2156.4  on 2351  degrees of freedom
AIC: 2188.4

Number of Fisher Scoring iterations: 4
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Social Networks
                       LR Chisq Df Pr(>Chisq)    
Income                    9.198  7   0.238747    
Ethnicity                35.007  5    1.5e-06 ***
`English Difficulties`   14.693  3   0.002099 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Income                 1.156501  7        1.010440
Ethnicity              1.217897  5        1.019908
`English Difficulties` 1.149528  3        1.023497

Source of Information: Email association with income after controlling for ethnicity.

qol_1 <- qol |> select(Email,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(Email~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = Email ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     -1.71895    0.24254  -7.087 1.37e-12 ***
Income$10,000 - $19,999          0.09937    0.27699   0.359  0.71979    
Income$20,000 - $29,999         -0.32526    0.30544  -1.065  0.28693    
Income$30,000 - $39,999          0.18592    0.27474   0.677  0.49857    
Income$40,000 - $49,999         -0.16323    0.30589  -0.534  0.59361    
Income$50,000 - $59,999         -0.08853    0.30991  -0.286  0.77514    
Income$60,000 - $69,999          0.12720    0.29100   0.437  0.66202    
Income$70,000 and over          -0.10039    0.21845  -0.460  0.64582    
EthnicityAsian Indian           -0.87637    0.19101  -4.588 4.47e-06 ***
EthnicityFilipino               -0.84050    0.26084  -3.222  0.00127 ** 
EthnicityKorean                 -1.58062    0.25576  -6.180 6.41e-10 ***
EthnicityOther                  -0.99472    0.34914  -2.849  0.00439 ** 
EthnicityVietnamese             -0.05644    0.16497  -0.342  0.73226    
`English Difficulties`Much       0.49407    0.18743   2.636  0.00839 ** 
`English Difficulties`Not much   0.28658    0.18293   1.567  0.11721    
`English Difficulties`Very much  0.51223    0.18759   2.731  0.00632 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 1764.6  on 2366  degrees of freedom
Residual deviance: 1670.8  on 2351  degrees of freedom
AIC: 1702.8

Number of Fisher Scoring iterations: 5
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Email
                       LR Chisq Df Pr(>Chisq)    
Income                    4.589  7    0.70999    
Ethnicity                73.035  5   2.39e-14 ***
`English Difficulties`   10.028  3    0.01833 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Income                 1.158490  7        1.010564
Ethnicity              1.187805  5        1.017360
`English Difficulties` 1.119153  3        1.018939

Source of Information: Online Communities association with income after controlling for ethnicity.

qol_1 <- qol |> select(`Online Communities`,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(`Online Communities`~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Online Communities` ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     -2.03870    0.23962  -8.508  < 2e-16 ***
Income$10,000 - $19,999         -0.01142    0.30172  -0.038  0.96980    
Income$20,000 - $29,999          0.27831    0.28966   0.961  0.33666    
Income$30,000 - $39,999          0.48431    0.27354   1.771  0.07663 .  
Income$40,000 - $49,999          0.09453    0.30373   0.311  0.75563    
Income$50,000 - $59,999          0.43914    0.28372   1.548  0.12167    
Income$60,000 - $69,999          0.34385    0.28154   1.221  0.22196    
Income$70,000 and over           0.58261    0.21445   2.717  0.00659 ** 
EthnicityAsian Indian            0.21852    0.16404   1.332  0.18281    
EthnicityFilipino               -0.13816    0.22229  -0.622  0.53425    
EthnicityKorean                  0.20646    0.17278   1.195  0.23210    
EthnicityOther                   0.02038    0.26781   0.076  0.93934    
EthnicityVietnamese             -0.07559    0.17986  -0.420  0.67429    
`English Difficulties`Much      -0.14417    0.16464  -0.876  0.38121    
`English Difficulties`Not much  -0.07654    0.14947  -0.512  0.60858    
`English Difficulties`Very much  0.03242    0.15910   0.204  0.83855    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2115.2  on 2366  degrees of freedom
Residual deviance: 2089.1  on 2351  degrees of freedom
AIC: 2121.1

Number of Fisher Scoring iterations: 4
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Online Communities
                       LR Chisq Df Pr(>Chisq)  
Income                  15.2034  7    0.03348 *
Ethnicity                5.5935  5    0.34780  
`English Difficulties`   1.2152  3    0.74937  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Income                 1.140891  7        1.009459
Ethnicity              1.226282  5        1.020608
`English Difficulties` 1.159297  3        1.024942

Source of Information: Health Website association with income after controlling for ethnicity.

qol_1 <- qol |> select(`Health Website`,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(`Health Website`~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Health Website` ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                      -0.2305     0.1711  -1.347  0.17802    
Income$10,000 - $19,999           0.2029     0.2062   0.984  0.32507    
Income$20,000 - $29,999           0.4174     0.2069   2.018  0.04359 *  
Income$30,000 - $39,999           0.3750     0.2036   1.842  0.06547 .  
Income$40,000 - $49,999           0.2880     0.2113   1.363  0.17288    
Income$50,000 - $59,999           0.8446     0.2084   4.053 5.06e-05 ***
Income$60,000 - $69,999           0.3306     0.2061   1.604  0.10878    
Income$70,000 and over            0.7730     0.1537   5.029 4.92e-07 ***
EthnicityAsian Indian            -0.1198     0.1276  -0.939  0.34789    
EthnicityFilipino                 0.2587     0.1614   1.602  0.10913    
EthnicityKorean                  -0.1240     0.1332  -0.931  0.35190    
EthnicityOther                    0.3549     0.2011   1.765  0.07762 .  
EthnicityVietnamese              -0.3502     0.1326  -2.640  0.00829 ** 
`English Difficulties`Much       -0.6831     0.1233  -5.540 3.03e-08 ***
`English Difficulties`Not much   -0.6834     0.1140  -5.994 2.05e-09 ***
`English Difficulties`Very much  -0.6671     0.1242  -5.371 7.84e-08 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 3246.0  on 2366  degrees of freedom
Residual deviance: 3105.5  on 2351  degrees of freedom
AIC: 3137.5

Number of Fisher Scoring iterations: 4
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Health Website
                       LR Chisq Df Pr(>Chisq)    
Income                   42.766  7  3.701e-07 ***
Ethnicity                20.841  5   0.000868 ***
`English Difficulties`   52.778  3  2.045e-11 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Income                 1.134844  7        1.009076
Ethnicity              1.210635  5        1.019298
`English Difficulties` 1.141474  3        1.022298

Other sources of information

qol |> select(`Health Info Discription`) |> group_by(`Health Info Discription`) |> summarize(n=n())
# A tibble: 63 × 2
   `Health Info Discription`       n
   <fct>                       <int>
 1 Army Base                       2
 2 at school                       1
 3 books and radio                 1
 4 Books; learned from college     1
 5 CDC, NIH-NLM                    1
 6 church                          1
 7 co-worker/trainings             1
 8 Co-workers                      1
 9 Conference,literatures          1
10 courses                         1
# ℹ 53 more rows

DIchotomized Income and Age

Source of Information association with income after controlling for ethnicity.

qol_1 <- qol |> select(Family,Income_median,Ethnicity,`English Difficulties`,Age) %>% filter(complete.cases(.)) |> 
  filter(Family %in%c("Yes","No")) |>  
  mutate(Family=droplevels(Family)) 
glm(Family~Age+Income_median+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = Family ~ Age + Income_median + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                 Estimate Std. Error z value Pr(>|z|)    
(Intercept)                      1.165371   0.162972   7.151 8.63e-13 ***
Age                             -0.013329   0.002633  -5.063 4.13e-07 ***
Income_medianAbove              -0.233812   0.087402  -2.675  0.00747 ** 
EthnicityAsian Indian           -0.398491   0.126240  -3.157  0.00160 ** 
EthnicityFilipino               -0.233253   0.160830  -1.450  0.14697    
EthnicityKorean                 -0.640809   0.131664  -4.867 1.13e-06 ***
EthnicityOther                  -0.855434   0.200005  -4.277 1.89e-05 ***
EthnicityVietnamese             -0.767160   0.129624  -5.918 3.25e-09 ***
`English Difficulties`Much       0.290918   0.122576   2.373  0.01763 *  
`English Difficulties`Not much  -0.085811   0.113413  -0.757  0.44927    
`English Difficulties`Very much -0.256892   0.122774  -2.092  0.03640 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 3273.3  on 2361  degrees of freedom
Residual deviance: 3179.4  on 2351  degrees of freedom
AIC: 3201.4

Number of Fisher Scoring iterations: 4
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Family
                       LR Chisq Df Pr(>Chisq)    
Age                      25.931  1  3.538e-07 ***
Income_median             7.178  1  0.0073795 ** 
Ethnicity                49.548  5  1.715e-09 ***
`English Difficulties`   18.090  3  0.0004214 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
coef(mod1) |> exp() -> OR
confint(mod1) |> exp() -> CI
Waiting for profiling to be done...
CI
                                    2.5 %    97.5 %
(Intercept)                     2.3345132 4.4233707
Age                             0.9816636 0.9918503
Income_medianAbove              0.6667190 0.9392148
EthnicityAsian Indian           0.5239065 0.8594823
EthnicityFilipino               0.5779810 1.0861944
EthnicityKorean                 0.4066805 0.6815167
EthnicityOther                  0.2861573 0.6275571
EthnicityVietnamese             0.3597710 0.5980986
`English Difficulties`Much      1.0524678 1.7019720
`English Difficulties`Not much  0.7347898 1.1462787
`English Difficulties`Very much 0.6077890 0.9836335
data.frame(estimate=OR,LCL = CI[,1], UCL = CI[,2])
                                 estimate       LCL       UCL
(Intercept)                     3.2071135 2.3345132 4.4233707
Age                             0.9867599 0.9816636 0.9918503
Income_medianAbove              0.7915104 0.6667190 0.9392148
EthnicityAsian Indian           0.6713326 0.5239065 0.8594823
EthnicityFilipino               0.7919533 0.5779810 1.0861944
EthnicityKorean                 0.5268662 0.4066805 0.6815167
EthnicityOther                  0.4250988 0.2861573 0.6275571
EthnicityVietnamese             0.4643298 0.3597710 0.5980986
`English Difficulties`Much      1.3376545 1.0524678 1.7019720
`English Difficulties`Not much  0.9177674 0.7347898 1.1462787
`English Difficulties`Very much 0.7734514 0.6077890 0.9836335

Source of Information: Close Friends association with income after controlling for ethnicity.

qol_1 <- qol |> select(`Close Friend`,Income_median,Ethnicity,`English Difficulties`,Age) %>% filter(complete.cases(.))
glm(`Close Friend`~Age+Income_median+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Close Friend` ~ Age + Income_median + Ethnicity + 
    `English Difficulties`, family = "binomial", data = qol_1)

Coefficients:
                                 Estimate Std. Error z value Pr(>|z|)    
(Intercept)                      0.113847   0.161566   0.705 0.481028    
Age                             -0.009948   0.002708  -3.674 0.000239 ***
Income_medianAbove              -0.101044   0.089526  -1.129 0.259041    
EthnicityAsian Indian            0.048261   0.125071   0.386 0.699594    
EthnicityFilipino               -0.732828   0.173462  -4.225 2.39e-05 ***
EthnicityKorean                 -0.214531   0.131635  -1.630 0.103156    
EthnicityOther                  -0.481370   0.206645  -2.329 0.019835 *  
EthnicityVietnamese             -0.626033   0.133611  -4.685 2.79e-06 ***
`English Difficulties`Much       0.201216   0.124691   1.614 0.106587    
`English Difficulties`Not much   0.171491   0.116621   1.470 0.141428    
`English Difficulties`Very much -0.064459   0.127548  -0.505 0.613300    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 3124.4  on 2362  degrees of freedom
Residual deviance: 3059.3  on 2352  degrees of freedom
AIC: 3081.3

Number of Fisher Scoring iterations: 4
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Close Friend
                       LR Chisq Df Pr(>Chisq)    
Age                      13.673  1  0.0002175 ***
Income_median             1.275  1  0.2588335    
Ethnicity                44.691  5  1.677e-08 ***
`English Difficulties`    5.626  3  0.1312934    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
coef(mod1) |> exp() -> OR
confint(mod1) |> exp() -> CI
Waiting for profiling to be done...
CI
                                    2.5 %    97.5 %
(Intercept)                     0.8162246 1.5380843
Age                             0.9848373 0.9953497
Income_medianAbove              0.7582790 1.0771364
EthnicityAsian Indian           0.8212284 1.3410844
EthnicityFilipino               0.3402972 0.6722438
EthnicityKorean                 0.6230173 1.0439584
EthnicityOther                  0.4090937 0.9212328
EthnicityVietnamese             0.4109169 0.6939373
`English Difficulties`Much      0.9575604 1.5614100
`English Difficulties`Not much  0.9445724 1.4922208
`English Difficulties`Very much 0.7295811 1.2030995
data.frame(estimate=OR,LCL = CI[,1], UCL = CI[,2])
                                 estimate       LCL       UCL
(Intercept)                     1.1205811 0.8162246 1.5380843
Age                             0.9901011 0.9848373 0.9953497
Income_medianAbove              0.9038932 0.7582790 1.0771364
EthnicityAsian Indian           1.0494446 0.8212284 1.3410844
EthnicityFilipino               0.4805481 0.3402972 0.6722438
EthnicityKorean                 0.8069201 0.6230173 1.0439584
EthnicityOther                  0.6179364 0.4090937 0.9212328
EthnicityVietnamese             0.5347088 0.4109169 0.6939373
`English Difficulties`Much      1.2228891 0.9575604 1.5614100
`English Difficulties`Not much  1.1870732 0.9445724 1.4922208
`English Difficulties`Very much 0.9375750 0.7295811 1.2030995

Source of Information: Acquaintances association with income after controlling for ethnicity.

qol_1 <- qol |> select(Acquaintances,Income_median,Ethnicity,`English Difficulties`,Age) %>% filter(complete.cases(.))
glm(Acquaintances~Age+Income_median+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = Acquaintances ~ Age + Income_median + Ethnicity + 
    `English Difficulties`, family = "binomial", data = qol_1)

Coefficients:
                                 Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     -1.583500   0.210671  -7.516 5.63e-14 ***
Age                             -0.004629   0.003480  -1.330   0.1834    
Income_medianAbove              -0.135655   0.115134  -1.178   0.2387    
EthnicityAsian Indian            0.001767   0.180654   0.010   0.9922    
EthnicityFilipino               -0.229271   0.244575  -0.937   0.3485    
EthnicityKorean                  0.933219   0.161658   5.773 7.80e-09 ***
EthnicityOther                  -0.666935   0.351785  -1.896   0.0580 .  
EthnicityVietnamese              0.370743   0.169712   2.185   0.0289 *  
`English Difficulties`Much       0.187252   0.156348   1.198   0.2310    
`English Difficulties`Not much   0.172661   0.145666   1.185   0.2359    
`English Difficulties`Very much -0.404930   0.186599  -2.170   0.0300 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2183.3  on 2361  degrees of freedom
Residual deviance: 2091.0  on 2351  degrees of freedom
AIC: 2113

Number of Fisher Scoring iterations: 5
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Acquaintances
                       LR Chisq Df Pr(>Chisq)    
Age                       1.787  1   0.181331    
Income_median             1.390  1   0.238353    
Ethnicity                61.191  5  6.896e-12 ***
`English Difficulties`   12.017  3   0.007325 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
coef(mod1) |> exp() -> OR
confint(mod1) |> exp() -> CI
Waiting for profiling to be done...
CI
                                    2.5 %    97.5 %
(Intercept)                     0.1350541 0.3085832
Age                             0.9885628 1.0021473
Income_medianAbove              0.6964334 1.0939248
EthnicityAsian Indian           0.7018672 1.4265961
EthnicityFilipino               0.4846277 1.2684989
EthnicityKorean                 1.8566976 3.5013383
EthnicityOther                  0.2429820 0.9785961
EthnicityVietnamese             1.0395110 2.0235401
`English Difficulties`Much      0.8868010 1.6376938
`English Difficulties`Not much  0.8935146 1.5822384
`English Difficulties`Very much 0.4593743 0.9559963
data.frame(estimate=OR,LCL = CI[,1], UCL = CI[,2])
                                 estimate       LCL       UCL
(Intercept)                     0.2052555 0.1350541 0.3085832
Age                             0.9953815 0.9885628 1.0021473
Income_medianAbove              0.8731435 0.6964334 1.0939248
EthnicityAsian Indian           1.0017683 0.7018672 1.4265961
EthnicityFilipino               0.7951128 0.4846277 1.2684989
EthnicityKorean                 2.5426805 1.8566976 3.5013383
EthnicityOther                  0.5132795 0.2429820 0.9785961
EthnicityVietnamese             1.4488106 1.0395110 2.0235401
`English Difficulties`Much      1.2059307 0.8868010 1.6376938
`English Difficulties`Not much  1.1884627 0.8935146 1.5822384
`English Difficulties`Very much 0.6670232 0.4593743 0.9559963

Source of Information: Health professionals association with income after controlling for ethnicity.

qol_1 <- qol |> select(`Heal Professionals`,Income_median,Ethnicity,`English Difficulties`,Age) %>% filter(complete.cases(.))
glm(`Heal Professionals`~Age+Income_median+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Heal Professionals` ~ Age + Income_median + Ethnicity + 
    `English Difficulties`, family = "binomial", data = qol_1)

Coefficients:
                                 Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     -0.048690   0.160890  -0.303 0.762170    
Age                              0.006785   0.002658   2.553 0.010684 *  
Income_medianAbove               0.502325   0.088652   5.666 1.46e-08 ***
EthnicityAsian Indian           -0.246897   0.126433  -1.953 0.050844 .  
EthnicityFilipino                0.645245   0.169786   3.800 0.000144 ***
EthnicityKorean                 -0.367263   0.132720  -2.767 0.005654 ** 
EthnicityOther                   0.264140   0.200686   1.316 0.188113    
EthnicityVietnamese              0.274006   0.129020   2.124 0.033691 *  
`English Difficulties`Much      -0.797862   0.123829  -6.443 1.17e-10 ***
`English Difficulties`Not much  -0.705960   0.115195  -6.128 8.88e-10 ***
`English Difficulties`Very much -0.479341   0.124369  -3.854 0.000116 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 3275.4  on 2362  degrees of freedom
Residual deviance: 3114.5  on 2352  degrees of freedom
AIC: 3136.5

Number of Fisher Scoring iterations: 4
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Heal Professionals
                       LR Chisq Df Pr(>Chisq)    
Age                       6.532  1    0.01059 *  
Income_median            32.390  1  1.262e-08 ***
Ethnicity                51.425  5  7.078e-10 ***
`English Difficulties`   54.533  3  8.637e-12 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Age                    1.053190  1        1.026250
Income_median          1.083576  1        1.040950
Ethnicity              1.172510  5        1.016042
`English Difficulties` 1.144138  3        1.022696
coef(mod1) |> exp() -> OR
confint(mod1) |> exp() -> CI
Waiting for profiling to be done...
CI
                                    2.5 %    97.5 %
(Intercept)                     0.6946781 1.3055715
Age                             1.0015823 1.0120750
Income_medianAbove              1.3894407 1.9669536
EthnicityAsian Indian           0.6094790 1.0006160
EthnicityFilipino               1.3708290 2.6688237
EthnicityKorean                 0.5336069 0.8979422
EthnicityOther                  0.8801672 1.9353656
EthnicityVietnamese             1.0217200 1.6945300
`English Difficulties`Much      0.3529335 0.5735471
`English Difficulties`Not much  0.3936012 0.6183286
`English Difficulties`Very much 0.4850699 0.7899576
data.frame(estimate=OR,LCL = CI[,1], UCL = CI[,2])
                                 estimate       LCL       UCL
(Intercept)                     0.9524759 0.6946781 1.3055715
Age                             1.0068078 1.0015823 1.0120750
Income_medianAbove              1.6525593 1.3894407 1.9669536
EthnicityAsian Indian           0.7812210 0.6094790 1.0006160
EthnicityFilipino               1.9064550 1.3708290 2.6688237
EthnicityKorean                 0.6926278 0.5336069 0.8979422
EthnicityOther                  1.3023103 0.8801672 1.9353656
EthnicityVietnamese             1.3152227 1.0217200 1.6945300
`English Difficulties`Much      0.4502906 0.3529335 0.5735471
`English Difficulties`Not much  0.4936346 0.3936012 0.6183286
`English Difficulties`Very much 0.6191910 0.4850699 0.7899576

Source of Information: Mobile apps association with income after controlling for ethnicity.

qol_1 <- qol |> select(`Mobile Apps`,Income_median,Ethnicity,`English Difficulties`,Age) %>% filter(complete.cases(.))
glm(`Mobile Apps`~Age+Income_median+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Mobile Apps` ~ Age + Income_median + Ethnicity + 
    `English Difficulties`, family = "binomial", data = qol_1)

Coefficients:
                                 Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     -2.052006   0.264632  -7.754 8.89e-15 ***
Age                             -0.008135   0.004547  -1.789   0.0736 .  
Income_medianAbove               0.249575   0.144851   1.723   0.0849 .  
EthnicityAsian Indian            0.272430   0.203961   1.336   0.1816    
EthnicityFilipino                0.087813   0.265573   0.331   0.7409    
EthnicityKorean                 -0.255867   0.245426  -1.043   0.2972    
EthnicityOther                   0.352306   0.306529   1.149   0.2504    
EthnicityVietnamese              0.362753   0.209893   1.728   0.0839 .  
`English Difficulties`Much      -0.218293   0.205094  -1.064   0.2872    
`English Difficulties`Not much  -0.199159   0.190550  -1.045   0.2959    
`English Difficulties`Very much  0.055932   0.188473   0.297   0.7666    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 1530.6  on 2362  degrees of freedom
Residual deviance: 1507.9  on 2352  degrees of freedom
AIC: 1529.9

Number of Fisher Scoring iterations: 5
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Mobile Apps
                       LR Chisq Df Pr(>Chisq)  
Age                      3.2782  1    0.07021 .
Income_median            2.9845  1    0.08407 .
Ethnicity                9.2065  5    0.10110  
`English Difficulties`   2.5490  3    0.46649  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Age                    1.044790  1        1.022150
Income_median          1.088313  1        1.043222
Ethnicity              1.184762  5        1.017099
`English Difficulties` 1.156840  3        1.024579
coef(mod1) |> exp() -> OR
confint(mod1) |> exp() -> CI
Waiting for profiling to be done...
CI
                                     2.5 %    97.5 %
(Intercept)                     0.07570839 0.2138109
Age                             0.98296920 1.0006633
Income_medianAbove              0.96704943 1.7072640
EthnicityAsian Indian           0.88138563 1.9641454
EthnicityFilipino               0.63954807 1.8191356
EthnicityKorean                 0.47377135 1.2444084
EthnicityOther                  0.75891551 2.5423724
EthnicityVietnamese             0.95253582 2.1730038
`English Difficulties`Much      0.53396409 1.1953307
`English Difficulties`Not much  0.56196649 1.1876827
`English Difficulties`Very much 0.72821573 1.5265266
data.frame(estimate=OR,LCL = CI[,1], UCL = CI[,2])
                                 estimate        LCL       UCL
(Intercept)                     0.1284769 0.07570839 0.2138109
Age                             0.9918983 0.98296920 1.0006633
Income_medianAbove              1.2834803 0.96704943 1.7072640
EthnicityAsian Indian           1.3131509 0.88138563 1.9641454
EthnicityFilipino               1.0917836 0.63954807 1.8191356
EthnicityKorean                 0.7742451 0.47377135 1.2444084
EthnicityOther                  1.4223443 0.75891551 2.5423724
EthnicityVietnamese             1.4372811 0.95253582 2.1730038
`English Difficulties`Much      0.8038901 0.53396409 1.1953307
`English Difficulties`Not much  0.8194200 0.56196649 1.1876827
`English Difficulties`Very much 1.0575254 0.72821573 1.5265266

Source of Information: Social Networks association with income after controlling for ethnicity.

qol_1 <- qol |> select(Age,`Social Networks`,Income_median,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(`Social Networks`~Age+Income_median+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Social Networks` ~ Age + Income_median + Ethnicity + 
    `English Difficulties`, family = "binomial", data = qol_1)

Coefficients:
                                 Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     -1.212730   0.203101  -5.971 2.36e-09 ***
Age                             -0.008131   0.003476  -2.339  0.01932 *  
Income_medianAbove               0.195236   0.113453   1.721  0.08528 .  
EthnicityAsian Indian           -0.507756   0.154608  -3.284  0.00102 ** 
EthnicityFilipino               -0.422867   0.204116  -2.072  0.03829 *  
EthnicityKorean                 -1.015015   0.182351  -5.566 2.60e-08 ***
EthnicityOther                  -0.587175   0.262744  -2.235  0.02543 *  
EthnicityVietnamese             -0.498540   0.159360  -3.128  0.00176 ** 
`English Difficulties`Much       0.435556   0.164138   2.654  0.00796 ** 
`English Difficulties`Not much   0.578527   0.151947   3.807  0.00014 ***
`English Difficulties`Very much  0.443454   0.160727   2.759  0.00580 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2211.5  on 2362  degrees of freedom
Residual deviance: 2152.1  on 2352  degrees of freedom
AIC: 2174.1

Number of Fisher Scoring iterations: 4
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Social Networks
                       LR Chisq Df Pr(>Chisq)    
Age                       5.579  1  0.0181794 *  
Income_median             2.968  1  0.0849440 .  
Ethnicity                36.126  5  8.964e-07 ***
`English Difficulties`   16.430  3  0.0009255 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Age                    1.039976  1        1.019792
Income_median          1.081434  1        1.039920
Ethnicity              1.174988  5        1.016257
`English Difficulties` 1.151229  3        1.023749
coef(mod1) |> exp() -> OR
confint(mod1) |> exp() -> CI
Waiting for profiling to be done...
CI
                                    2.5 %    97.5 %
(Intercept)                     0.1988705 0.4410933
Age                             0.9851041 0.9986273
Income_medianAbove              0.9734871 1.5190475
EthnicityAsian Indian           0.4433695 0.8132403
EthnicityFilipino               0.4348596 0.9696723
EthnicityKorean                 0.2515158 0.5147156
EthnicityOther                  0.3240755 0.9122398
EthnicityVietnamese             0.4430367 0.8279972
`English Difficulties`Much      1.1199437 2.1327206
`English Difficulties`Not much  1.3257367 2.4063796
`English Difficulties`Very much 1.1365806 2.1355897
data.frame(estimate=OR,LCL = CI[,1], UCL = CI[,2])
                                 estimate       LCL       UCL
(Intercept)                     0.2973843 0.1988705 0.4410933
Age                             0.9919015 0.9851041 0.9986273
Income_medianAbove              1.2155978 0.9734871 1.5190475
EthnicityAsian Indian           0.6018449 0.4433695 0.8132403
EthnicityFilipino               0.6551659 0.4348596 0.9696723
EthnicityKorean                 0.3623971 0.2515158 0.5147156
EthnicityOther                  0.5558954 0.3240755 0.9122398
EthnicityVietnamese             0.6074171 0.4430367 0.8279972
`English Difficulties`Much      1.5458223 1.1199437 2.1327206
`English Difficulties`Not much  1.7834093 1.3257367 2.4063796
`English Difficulties`Very much 1.5580801 1.1365806 2.1355897

Source of Information: Email association with income after controlling for ethnicity.

qol_1 <- qol |> select(Age,Email,Income_median,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(Email~Age+Income_median+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = Email ~ Age + Income_median + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                 Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     -2.670643   0.250347 -10.668  < 2e-16 ***
Age                              0.021905   0.003801   5.763 8.28e-09 ***
Income_medianAbove               0.013050   0.135025   0.097  0.92301    
EthnicityAsian Indian           -0.822236   0.190804  -4.309 1.64e-05 ***
EthnicityFilipino               -0.836542   0.262567  -3.186  0.00144 ** 
EthnicityKorean                 -1.621480   0.256396  -6.324 2.55e-10 ***
EthnicityOther                  -0.988713   0.348460  -2.837  0.00455 ** 
EthnicityVietnamese             -0.077920   0.165345  -0.471  0.63746    
`English Difficulties`Much       0.385509   0.190021   2.029  0.04248 *  
`English Difficulties`Not much   0.161112   0.185409   0.869  0.38487    
`English Difficulties`Very much  0.489113   0.188725   2.592  0.00955 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 1763.5  on 2362  degrees of freedom
Residual deviance: 1641.0  on 2352  degrees of freedom
AIC: 1663

Number of Fisher Scoring iterations: 5
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Email
                       LR Chisq Df Pr(>Chisq)    
Age                      33.103  1  8.741e-09 ***
Income_median             0.009  1    0.92301    
Ethnicity                72.672  5  2.845e-14 ***
`English Difficulties`    8.326  3    0.03973 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Age                    1.041187  1        1.020386
Income_median          1.093394  1        1.045655
Ethnicity              1.134792  5        1.012725
`English Difficulties` 1.130385  3        1.020636
coef(mod1) |> exp() -> OR
confint(mod1) |> exp() -> CI
Waiting for profiling to be done...
CI
                                     2.5 %    97.5 %
(Intercept)                     0.04195969 0.1120232
Age                             1.01456691 1.0298099
Income_medianAbove              0.77723523 1.3201025
EthnicityAsian Indian           0.30005278 0.6348771
EthnicityFilipino               0.25258895 0.7104847
EthnicityKorean                 0.11645226 0.3197856
EthnicityOther                  0.17705766 0.7037606
EthnicityVietnamese             0.66799075 1.2780881
`English Difficulties`Much      1.01327585 2.1366132
`English Difficulties`Not much  0.81736693 1.6925770
`English Difficulties`Very much 1.12651634 2.3635174
data.frame(estimate=OR,LCL = CI[,1], UCL = CI[,2])
                                  estimate        LCL       UCL
(Intercept)                     0.06920769 0.04195969 0.1120232
Age                             1.02214708 1.01456691 1.0298099
Income_medianAbove              1.01313555 0.77723523 1.3201025
EthnicityAsian Indian           0.43944786 0.30005278 0.6348771
EthnicityFilipino               0.43320605 0.25258895 0.7104847
EthnicityKorean                 0.19760596 0.11645226 0.3197856
EthnicityOther                  0.37205527 0.17705766 0.7037606
EthnicityVietnamese             0.92503850 0.66799075 1.2780881
`English Difficulties`Much      1.47036187 1.01327585 2.1366132
`English Difficulties`Not much  1.17481689 0.81736693 1.6925770
`English Difficulties`Very much 1.63086906 1.12651634 2.3635174

Source of Information: Online Communities association with income after controlling for ethnicity.

qol_1 <- qol |> select(Age,`Online Communities`,Income_median,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(`Online Communities`~Age+Income_median+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Online Communities` ~ Age + Income_median + Ethnicity + 
    `English Difficulties`, family = "binomial", data = qol_1)

Coefficients:
                                 Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     -1.781276   0.216511  -8.227  < 2e-16 ***
Age                             -0.001377   0.003563  -0.387  0.69911    
Income_medianAbove               0.331072   0.116338   2.846  0.00443 ** 
EthnicityAsian Indian            0.213733   0.163554   1.307  0.19128    
EthnicityFilipino               -0.123961   0.222106  -0.558  0.57677    
EthnicityKorean                  0.230964   0.171742   1.345  0.17868    
EthnicityOther                   0.049009   0.266012   0.184  0.85383    
EthnicityVietnamese             -0.047760   0.178444  -0.268  0.78897    
`English Difficulties`Much      -0.148575   0.164779  -0.902  0.36724    
`English Difficulties`Not much  -0.064011   0.150262  -0.426  0.67011    
`English Difficulties`Very much  0.054390   0.158689   0.343  0.73179    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2113.7  on 2362  degrees of freedom
Residual deviance: 2094.6  on 2352  degrees of freedom
AIC: 2116.6

Number of Fisher Scoring iterations: 4
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Online Communities
                       LR Chisq Df Pr(>Chisq)   
Age                      0.1498  1   0.698697   
Income_median            8.1606  1   0.004281 **
Ethnicity                5.3697  5   0.372445   
`English Difficulties`   1.4386  3   0.696516   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Age                    1.045823  1        1.022655
Income_median          1.074939  1        1.036793
Ethnicity              1.181630  5        1.016830
`English Difficulties` 1.166789  3        1.026043
coef(mod1) |> exp() -> OR
confint(mod1) |> exp() -> CI
Waiting for profiling to be done...
CI
                                    2.5 %    97.5 %
(Intercept)                     0.1095119 0.2560137
Age                             0.9916183 1.0055750
Income_medianAbove              1.1092802 1.7507000
EthnicityAsian Indian           0.8988373 1.7078055
EthnicityFilipino               0.5656148 1.3540816
EthnicityKorean                 0.8990420 1.7641174
EthnicityOther                  0.6104765 1.7400912
EthnicityVietnamese             0.6703686 1.3507186
`English Difficulties`Much      0.6220446 1.1876519
`English Difficulties`Not much  0.6980612 1.2587259
`English Difficulties`Very much 0.7718943 1.4388119
data.frame(estimate=OR,LCL = CI[,1], UCL = CI[,2])
                                 estimate       LCL       UCL
(Intercept)                     0.1684231 0.1095119 0.2560137
Age                             0.9986237 0.9916183 1.0055750
Income_medianAbove              1.3924596 1.1092802 1.7507000
EthnicityAsian Indian           1.2382916 0.8988373 1.7078055
EthnicityFilipino               0.8834146 0.5656148 1.3540816
EthnicityKorean                 1.2598138 0.8990420 1.7641174
EthnicityOther                  1.0502295 0.6104765 1.7400912
EthnicityVietnamese             0.9533621 0.6703686 1.3507186
`English Difficulties`Much      0.8619353 0.6220446 1.1876519
`English Difficulties`Not much  0.9379943 0.6980612 1.2587259
`English Difficulties`Very much 1.0558966 0.7718943 1.4388119

Source of Information: Health Website association with income after controlling for ethnicity.

qol_1 <- qol |> select(Age,`Health Website`,Income_median,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(`Health Website`~Age+Income_median+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Health Website` ~ Age + Income_median + Ethnicity + 
    `English Difficulties`, family = "binomial", data = qol_1)

Coefficients:
                                 Estimate Std. Error z value Pr(>|z|)    
(Intercept)                      0.473245   0.160822   2.943 0.003254 ** 
Age                             -0.009854   0.002693  -3.660 0.000253 ***
Income_medianAbove               0.361683   0.088034   4.108 3.98e-05 ***
EthnicityAsian Indian           -0.148138   0.126818  -1.168 0.242761    
EthnicityFilipino                0.280915   0.161224   1.742 0.081441 .  
EthnicityKorean                 -0.080419   0.132219  -0.608 0.543038    
EthnicityOther                   0.395742   0.199409   1.985 0.047191 *  
EthnicityVietnamese             -0.323797   0.131637  -2.460 0.013902 *  
`English Difficulties`Much      -0.646484   0.123267  -5.245 1.57e-07 ***
`English Difficulties`Not much  -0.614601   0.114351  -5.375 7.67e-08 ***
`English Difficulties`Very much -0.618972   0.123580  -5.009 5.48e-07 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 3241.4  on 2362  degrees of freedom
Residual deviance: 3112.8  on 2352  degrees of freedom
AIC: 3134.8

Number of Fisher Scoring iterations: 4
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Health Website
                       LR Chisq Df Pr(>Chisq)    
Age                      13.548  1  0.0002325 ***
Income_median            16.909  1  3.921e-05 ***
Ethnicity                21.593  5  0.0006256 ***
`English Difficulties`   44.814  3  1.013e-09 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Age                    1.034820  1        1.017261
Income_median          1.067095  1        1.033003
Ethnicity              1.166940  5        1.015558
`English Difficulties` 1.144714  3        1.022781
coef(mod1) |> exp() -> OR
confint(mod1) |> exp() -> CI
Waiting for profiling to be done...
CI
                                    2.5 %    97.5 %
(Intercept)                     1.1716413 2.2013747
Age                             0.9849613 0.9954163
Income_medianAbove              1.2083439 1.7064310
EthnicityAsian Indian           0.6722893 1.1054097
EthnicityFilipino               0.9660854 1.8183664
EthnicityKorean                 0.7118350 1.1955087
EthnicityOther                  1.0061006 2.2011671
EthnicityVietnamese             0.5584708 0.9358103
`English Difficulties`Much      0.4110725 0.6665664
`English Difficulties`Not much  0.4319996 0.6764096
`English Difficulties`Very much 0.4222927 0.6855997
data.frame(estimate=OR,LCL = CI[,1], UCL = CI[,2])
                                 estimate       LCL       UCL
(Intercept)                     1.6051940 1.1716413 2.2013747
Age                             0.9901947 0.9849613 0.9954163
Income_medianAbove              1.4357444 1.2083439 1.7064310
EthnicityAsian Indian           0.8623120 0.6722893 1.1054097
EthnicityFilipino               1.3243409 0.9660854 1.8183664
EthnicityKorean                 0.9227294 0.7118350 1.1955087
EthnicityOther                  1.4854864 1.0061006 2.2011671
EthnicityVietnamese             0.7233974 0.5584708 0.9358103
`English Difficulties`Much      0.5238847 0.4110725 0.6665664
`English Difficulties`Not much  0.5408564 0.4319996 0.6764096
`English Difficulties`Very much 0.5384979 0.4222927 0.6855997

Source of Information: Online resources association with age andincome after controlling for ethnicity.

qol_1 <- qol |> mutate(online_source = 1*(`Health Website`=="Yes" |
                                   `Online Communities`=="Yes" | 
                                   `Social Networks`=="Yes" | 
                                   `Email`=="Yes")) |> 
  select(Age,online_source,Income_median,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))

glm(as.factor(online_source)~Age+Income_median+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = as.factor(online_source) ~ Age + Income_median + 
    Ethnicity + `English Difficulties`, family = "binomial", 
    data = qol_1)

Coefficients:
                                 Estimate Std. Error z value Pr(>|z|)    
(Intercept)                      1.497500   0.169245   8.848  < 2e-16 ***
Age                             -0.013841   0.002672  -5.180 2.22e-07 ***
Income_medianAbove               0.380343   0.089370   4.256 2.08e-05 ***
EthnicityAsian Indian           -0.639781   0.131790  -4.855 1.21e-06 ***
EthnicityFilipino               -0.544275   0.166592  -3.267  0.00109 ** 
EthnicityKorean                 -0.536206   0.136298  -3.934 8.35e-05 ***
EthnicityOther                  -0.054718   0.213543  -0.256  0.79777    
EthnicityVietnamese             -0.801233   0.132593  -6.043 1.51e-09 ***
`English Difficulties`Much      -0.350442   0.125304  -2.797  0.00516 ** 
`English Difficulties`Not much  -0.334709   0.117362  -2.852  0.00435 ** 
`English Difficulties`Very much -0.318315   0.127161  -2.503  0.01231 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 3184.5  on 2362  degrees of freedom
Residual deviance: 3060.6  on 2352  degrees of freedom
AIC: 3082.6

Number of Fisher Scoring iterations: 4
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: as.factor(online_source)
                       LR Chisq Df Pr(>Chisq)    
Age                      27.065  1  1.967e-07 ***
Income_median            18.166  1  2.025e-05 ***
Ethnicity                48.624  5  2.649e-09 ***
`English Difficulties`   11.895  3   0.007753 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Age                    1.040500  1        1.020049
Income_median          1.073495  1        1.036096
Ethnicity              1.182391  5        1.016895
`English Difficulties` 1.162744  3        1.025449
coef(mod1) |> exp() -> OR
confint(mod1) |> exp() -> CI
Waiting for profiling to be done...
CI
                                    2.5 %    97.5 %
(Intercept)                     3.2167677 6.2468651
Age                             0.9810877 0.9914210
Income_medianAbove              1.2279487 1.7432394
EthnicityAsian Indian           0.4069458 0.6823199
EthnicityFilipino               0.4187935 0.8050680
EthnicityKorean                 0.4475189 0.7637397
EthnicityOther                  0.6265857 1.4497957
EthnicityVietnamese             0.3456861 0.5814279
`English Difficulties`Much      0.5509079 0.9004764
`English Difficulties`Not much  0.5683241 0.9004443
`English Difficulties`Very much 0.5668905 0.9333926
data.frame(estimate=OR,LCL = CI[,1], UCL = CI[,2])
                                 estimate       LCL       UCL
(Intercept)                     4.4704987 3.2167677 6.2468651
Age                             0.9862541 0.9810877 0.9914210
Income_medianAbove              1.4627868 1.2279487 1.7432394
EthnicityAsian Indian           0.5274081 0.4069458 0.6823199
EthnicityFilipino               0.5802622 0.4187935 0.8050680
EthnicityKorean                 0.5849635 0.4475189 0.7637397
EthnicityOther                  0.9467519 0.6265857 1.4497957
EthnicityVietnamese             0.4487752 0.3456861 0.5814279
`English Difficulties`Much      0.7043765 0.5509079 0.9004764
`English Difficulties`Not much  0.7155465 0.5683241 0.9004443
`English Difficulties`Very much 0.7273737 0.5668905 0.9333926

income: Only people above age 50

Source of Information association with income after controlling for ethnicity.

qol_1 <- qol |> filter(Age >=50) |> 
  select(Family,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.)) |> 
  filter(Family %in%c("Yes","No")) |>  
  mutate(Family=droplevels(Family)) 
glm(Family~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = Family ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                      0.36681    0.30656   1.197   0.2315    
Income$10,000 - $19,999         -0.26318    0.31311  -0.841   0.4006    
Income$20,000 - $29,999         -0.23822    0.35264  -0.676   0.4993    
Income$30,000 - $39,999         -0.47825    0.32187  -1.486   0.1373    
Income$40,000 - $49,999         -0.74013    0.34391  -2.152   0.0314 *  
Income$50,000 - $59,999         -0.17679    0.35075  -0.504   0.6142    
Income$60,000 - $69,999         -0.82047    0.36974  -2.219   0.0265 *  
Income$70,000 and over          -0.27695    0.26501  -1.045   0.2960    
EthnicityAsian Indian            0.05252    0.25650   0.205   0.8378    
EthnicityFilipino               -0.09251    0.30415  -0.304   0.7610    
EthnicityKorean                 -0.29943    0.23696  -1.264   0.2064    
EthnicityOther                  -0.93772    0.38605  -2.429   0.0151 *  
EthnicityVietnamese             -0.94545    0.22429  -4.215 2.49e-05 ***
`English Difficulties`Much       0.56231    0.23319   2.411   0.0159 *  
`English Difficulties`Not much   0.19755    0.21576   0.916   0.3599    
`English Difficulties`Very much  0.15509    0.25596   0.606   0.5446    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 999.82  on 721  degrees of freedom
Residual deviance: 952.66  on 706  degrees of freedom
AIC: 984.66

Number of Fisher Scoring iterations: 4
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Family
                       LR Chisq Df Pr(>Chisq)    
Income                   8.6351  7    0.27993    
Ethnicity               26.7599  5  6.352e-05 ***
`English Difficulties`   6.4039  3    0.09353 .  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Dichotomized Income

qol_1 <- qol |> filter(Age >=50) |> 
  select(Family,Income_median,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.)) |> 
  filter(Family %in%c("Yes","No")) |>  
  mutate(Family=droplevels(Family)) 
glm(Family~Income_median+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = Family ~ Income_median + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                      0.10800    0.23149   0.467   0.6408    
Income_medianAbove              -0.08014    0.16511  -0.485   0.6274    
EthnicityAsian Indian            0.09598    0.25190   0.381   0.7032    
EthnicityFilipino               -0.17998    0.30069  -0.599   0.5495    
EthnicityKorean                 -0.34842    0.23429  -1.487   0.1370    
EthnicityOther                  -0.98306    0.38218  -2.572   0.0101 *  
EthnicityVietnamese             -1.00473    0.21997  -4.568 4.93e-06 ***
`English Difficulties`Much       0.55452    0.22914   2.420   0.0155 *  
`English Difficulties`Not much   0.16856    0.21234   0.794   0.4273    
`English Difficulties`Very much  0.14618    0.25281   0.578   0.5631    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 999.82  on 721  degrees of freedom
Residual deviance: 961.06  on 712  degrees of freedom
AIC: 981.06

Number of Fisher Scoring iterations: 4
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Family
                       LR Chisq Df Pr(>Chisq)    
Income_median             0.236  1    0.62729    
Ethnicity                32.311  5  5.155e-06 ***
`English Difficulties`    6.632  3    0.08461 .  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Source of Information: Close Friends association with income after controlling for ethnicity.

qol_1 <- qol |>filter(Age >=50) |>
  select(`Close Friend`,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(`Close Friend`~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Close Friend` ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)  
(Intercept)                     -0.42874    0.31299  -1.370   0.1707  
Income$10,000 - $19,999          0.06728    0.31352   0.215   0.8301  
Income$20,000 - $29,999         -0.24858    0.36367  -0.684   0.4943  
Income$30,000 - $39,999         -0.10892    0.32556  -0.335   0.7380  
Income$40,000 - $49,999         -0.28828    0.35142  -0.820   0.4120  
Income$50,000 - $59,999         -0.37253    0.36649  -1.016   0.3094  
Income$60,000 - $69,999         -0.70694    0.39991  -1.768   0.0771 .
Income$70,000 and over          -0.15951    0.26749  -0.596   0.5510  
EthnicityAsian Indian            0.04070    0.25788   0.158   0.8746  
EthnicityFilipino               -0.38790    0.33304  -1.165   0.2441  
EthnicityKorean                 -0.28089    0.24605  -1.142   0.2536  
EthnicityOther                   0.06676    0.37571   0.178   0.8590  
EthnicityVietnamese             -0.58392    0.23313  -2.505   0.0123 *
`English Difficulties`Much       0.47513    0.23846   1.992   0.0463 *
`English Difficulties`Not much   0.16504    0.22609   0.730   0.4654  
`English Difficulties`Very much -0.12862    0.27239  -0.472   0.6368  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 927.18  on 722  degrees of freedom
Residual deviance: 904.51  on 707  degrees of freedom
AIC: 936.51

Number of Fisher Scoring iterations: 4
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Close Friend
                       LR Chisq Df Pr(>Chisq)  
Income                   5.2953  7    0.62397  
Ethnicity                9.1507  5    0.10320  
`English Difficulties`   6.4572  3    0.09137 .
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Dichotomized Income

qol_1 <- qol |>filter(Age >=50) |>
  select(`Close Friend`,Income_median,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(`Close Friend`~Income_median+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Close Friend` ~ Income_median + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)   
(Intercept)                     -0.49735    0.24121  -2.062  0.03922 * 
Income_medianAbove              -0.13721    0.17277  -0.794  0.42709   
EthnicityAsian Indian            0.05348    0.25329   0.211  0.83276   
EthnicityFilipino               -0.44960    0.33006  -1.362  0.17314   
EthnicityKorean                 -0.32399    0.24361  -1.330  0.18355   
EthnicityOther                  -0.00814    0.37255  -0.022  0.98257   
EthnicityVietnamese             -0.63489    0.22881  -2.775  0.00552 **
`English Difficulties`Much       0.44476    0.23472   1.895  0.05811 . 
`English Difficulties`Not much   0.12345    0.22276   0.554  0.57946   
`English Difficulties`Very much -0.15928    0.27028  -0.589  0.55565   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 927.18  on 722  degrees of freedom
Residual deviance: 909.17  on 713  degrees of freedom
AIC: 929.17

Number of Fisher Scoring iterations: 4
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Close Friend
                       LR Chisq Df Pr(>Chisq)  
Income_median            0.6329  1    0.42628  
Ethnicity               11.5776  5    0.04106 *
`English Difficulties`   6.3690  3    0.09497 .
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Source of Information: Acquaintances association with income after controlling for ethnicity.

qol_1 <- qol |>filter(Age >=50) |>
  select(Acquaintances,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(Acquaintances~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = Acquaintances ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     -2.06434    0.41642  -4.957 7.15e-07 ***
Income$10,000 - $19,999         -0.03410    0.40031  -0.085  0.93212    
Income$20,000 - $29,999         -0.47548    0.49996  -0.951  0.34159    
Income$30,000 - $39,999          0.58230    0.38001   1.532  0.12544    
Income$40,000 - $49,999         -0.21786    0.46266  -0.471  0.63772    
Income$50,000 - $59,999         -0.44706    0.49626  -0.901  0.36766    
Income$60,000 - $69,999         -0.12095    0.48259  -0.251  0.80210    
Income$70,000 and over           0.13439    0.34044   0.395  0.69303    
EthnicityAsian Indian            0.84645    0.33201   2.549  0.01079 *  
EthnicityFilipino               -0.01465    0.47236  -0.031  0.97526    
EthnicityKorean                  0.94250    0.30819   3.058  0.00223 ** 
EthnicityOther                  -0.34351    0.64752  -0.531  0.59576    
EthnicityVietnamese              0.36256    0.31120   1.165  0.24401    
`English Difficulties`Much       0.24058    0.29596   0.813  0.41629    
`English Difficulties`Not much   0.08182    0.27975   0.292  0.76991    
`English Difficulties`Very much -0.37375    0.37729  -0.991  0.32186    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 665.42  on 721  degrees of freedom
Residual deviance: 634.44  on 706  degrees of freedom
AIC: 666.44

Number of Fisher Scoring iterations: 5
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Acquaintances
                       LR Chisq Df Pr(>Chisq)   
Income                   8.7685  7   0.269710   
Ethnicity               15.6699  5   0.007852 **
`English Difficulties`   2.9576  3   0.398204   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Source of Information: Health professionals association with income after controlling for ethnicity.

qol_1 <- qol |> filter(Age >=50) |>
  select(`Heal Professionals`,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(`Heal Professionals`~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Heal Professionals` ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     -0.28084    0.30836  -0.911 0.362415    
Income$10,000 - $19,999          0.21623    0.31203   0.693 0.488327    
Income$20,000 - $29,999          0.09153    0.35036   0.261 0.793900    
Income$30,000 - $39,999         -0.03811    0.32043  -0.119 0.905329    
Income$40,000 - $49,999          0.49568    0.33697   1.471 0.141292    
Income$50,000 - $59,999          0.27589    0.34891   0.791 0.429109    
Income$60,000 - $69,999          0.42902    0.36083   1.189 0.234440    
Income$70,000 and over           0.97419    0.26694   3.649 0.000263 ***
EthnicityAsian Indian            0.37060    0.25872   1.432 0.152027    
EthnicityFilipino                0.81650    0.33116   2.466 0.013679 *  
EthnicityKorean                 -0.11733    0.24120  -0.486 0.626660    
EthnicityOther                   0.70143    0.38796   1.808 0.070608 .  
EthnicityVietnamese              0.48786    0.22206   2.197 0.028024 *  
`English Difficulties`Much      -0.47030    0.23257  -2.022 0.043155 *  
`English Difficulties`Not much  -0.47406    0.21690  -2.186 0.028846 *  
`English Difficulties`Very much -0.30988    0.25931  -1.195 0.232084    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 1001.28  on 722  degrees of freedom
Residual deviance:  945.74  on 707  degrees of freedom
AIC: 977.74

Number of Fisher Scoring iterations: 4
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Heal Professionals
                       LR Chisq Df Pr(>Chisq)   
Income                  23.4507  7   0.001422 **
Ethnicity               14.9889  5   0.010410 * 
`English Difficulties`   5.6138  3   0.131986   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Income                 1.302470  7        1.019055
Ethnicity              1.363641  5        1.031502
`English Difficulties` 1.214059  3        1.032856

Source of Information: Mobile apps association with income after controlling for ethnicity.

qol_1 <- qol |>filter(Age >=50) |>
  select(`Mobile Apps`,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(`Mobile Apps`~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Mobile Apps` ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     -3.68837    0.72722  -5.072 3.94e-07 ***
Income$10,000 - $19,999          1.23016    0.70722   1.739   0.0820 .  
Income$20,000 - $29,999          1.26095    0.75515   1.670   0.0950 .  
Income$30,000 - $39,999          0.75306    0.76359   0.986   0.3240    
Income$40,000 - $49,999          0.45139    0.85089   0.530   0.5958    
Income$50,000 - $59,999          0.65099    0.84715   0.768   0.4422    
Income$60,000 - $69,999          1.10923    0.80040   1.386   0.1658    
Income$70,000 and over           1.52534    0.64670   2.359   0.0183 *  
EthnicityAsian Indian            0.99591    0.45319   2.198   0.0280 *  
EthnicityFilipino               -0.09863    0.62134  -0.159   0.8739    
EthnicityKorean                  0.21641    0.49337   0.439   0.6609    
EthnicityOther                   0.37391    0.69144   0.541   0.5887    
EthnicityVietnamese              0.80723    0.41883   1.927   0.0539 .  
`English Difficulties`Much      -0.51195    0.42059  -1.217   0.2235    
`English Difficulties`Not much  -0.36401    0.36738  -0.991   0.3218    
`English Difficulties`Very much -0.48091    0.47049  -1.022   0.3067    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 398.98  on 722  degrees of freedom
Residual deviance: 379.32  on 707  degrees of freedom
AIC: 411.32

Number of Fisher Scoring iterations: 6
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Mobile Apps
                       LR Chisq Df Pr(>Chisq)
Income                  10.6108  7     0.1565
Ethnicity                8.1279  5     0.1493
`English Difficulties`   1.9692  3     0.5788
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Income                 1.325632  7        1.020339
Ethnicity              1.333288  5        1.029182
`English Difficulties` 1.269087  3        1.040516

Source of Information: Social Networks association with income after controlling for ethnicity.

qol_1 <- qol |>
  filter(Age >=50) |>
  select(`Social Networks`,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(`Social Networks`~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Social Networks` ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     -1.46140    0.41808  -3.496 0.000473 ***
Income$10,000 - $19,999          0.48306    0.41912   1.153 0.249095    
Income$20,000 - $29,999          0.06815    0.49145   0.139 0.889705    
Income$30,000 - $39,999         -0.18662    0.47950  -0.389 0.697132    
Income$40,000 - $49,999         -0.16280    0.49723  -0.327 0.743357    
Income$50,000 - $59,999          0.46150    0.46549   0.991 0.321476    
Income$60,000 - $69,999         -0.21578    0.54373  -0.397 0.691474    
Income$70,000 and over           0.30551    0.36335   0.841 0.400449    
EthnicityAsian Indian           -1.07291    0.36764  -2.918 0.003518 ** 
EthnicityFilipino               -0.62636    0.41192  -1.521 0.128370    
EthnicityKorean                 -1.50978    0.37687  -4.006 6.17e-05 ***
EthnicityOther                  -0.19677    0.43853  -0.449 0.653638    
EthnicityVietnamese             -0.80614    0.28365  -2.842 0.004483 ** 
`English Difficulties`Much       0.25557    0.32332   0.790 0.429252    
`English Difficulties`Not much   0.44741    0.29956   1.494 0.135289    
`English Difficulties`Very much  0.20278    0.34214   0.593 0.553385    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 636.82  on 722  degrees of freedom
Residual deviance: 603.14  on 707  degrees of freedom
AIC: 635.14

Number of Fisher Scoring iterations: 5
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Social Networks
                       LR Chisq Df Pr(>Chisq)    
Income                   5.4182  7  0.6090709    
Ethnicity               24.4683  5  0.0001764 ***
`English Difficulties`   2.3143  3  0.5097907    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Income                 1.291552  7        1.018443
Ethnicity              1.339391  5        1.029653
`English Difficulties` 1.266980  3        1.040227

Source of Information: Email association with income after controlling for ethnicity.

qol_1 <- qol |> filter(Age >=50) |>
  select(Email,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(Email~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = Email ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                 Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     -0.990850   0.384575  -2.576  0.00998 ** 
Income$10,000 - $19,999          0.258859   0.400814   0.646  0.51839    
Income$20,000 - $29,999         -0.343944   0.507724  -0.677  0.49814    
Income$30,000 - $39,999          0.526123   0.403411   1.304  0.19217    
Income$40,000 - $49,999         -0.245881   0.485303  -0.507  0.61240    
Income$50,000 - $59,999         -0.001372   0.484744  -0.003  0.99774    
Income$60,000 - $69,999          0.343542   0.465999   0.737  0.46099    
Income$70,000 and over           0.416312   0.337439   1.234  0.21730    
EthnicityAsian Indian           -0.694628   0.307687  -2.258  0.02397 *  
EthnicityFilipino               -1.168110   0.422479  -2.765  0.00569 ** 
EthnicityKorean                 -1.660003   0.359541  -4.617 3.89e-06 ***
EthnicityOther                  -2.049923   0.747299  -2.743  0.00609 ** 
EthnicityVietnamese             -0.728322   0.261011  -2.790  0.00526 ** 
`English Difficulties`Much       0.103462   0.289954   0.357  0.72123    
`English Difficulties`Not much   0.012295   0.275223   0.045  0.96437    
`English Difficulties`Very much -0.239403   0.326252  -0.734  0.46307    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 699.09  on 722  degrees of freedom
Residual deviance: 653.48  on 707  degrees of freedom
AIC: 685.48

Number of Fisher Scoring iterations: 5
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Email
                       LR Chisq Df Pr(>Chisq)    
Income                    7.319  7     0.3964    
Ethnicity                35.659  5  1.111e-06 ***
`English Difficulties`    1.190  3     0.7553    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Income                 1.294807  7        1.018626
Ethnicity              1.322140  5        1.028319
`English Difficulties` 1.225625  3        1.034490

Source of Information: Online Communities association with income after controlling for ethnicity.

qol_1 <- qol |>
  filter(Age >=50) |>
  select(`Online Communities`,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(`Online Communities`~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Online Communities` ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     -1.58579    0.42761  -3.709 0.000208 ***
Income$10,000 - $19,999          0.06886    0.44701   0.154 0.877574    
Income$20,000 - $29,999         -0.06721    0.50771  -0.132 0.894682    
Income$30,000 - $39,999          0.03459    0.46045   0.075 0.940114    
Income$40,000 - $49,999         -0.67664    0.57000  -1.187 0.235194    
Income$50,000 - $59,999          0.35332    0.47552   0.743 0.457471    
Income$60,000 - $69,999         -0.36161    0.57322  -0.631 0.528148    
Income$70,000 and over           0.44661    0.37038   1.206 0.227885    
EthnicityAsian Indian           -0.07136    0.35618  -0.200 0.841216    
EthnicityFilipino               -0.07632    0.41833  -0.182 0.855229    
EthnicityKorean                 -0.26110    0.34515  -0.756 0.449368    
EthnicityOther                   0.57520    0.44489   1.293 0.196043    
EthnicityVietnamese              0.05264    0.30451   0.173 0.862747    
`English Difficulties`Much      -0.35620    0.31056  -1.147 0.251390    
`English Difficulties`Not much  -0.24270    0.28189  -0.861 0.389251    
`English Difficulties`Very much -0.72440    0.36996  -1.958 0.050226 .  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 609.67  on 722  degrees of freedom
Residual deviance: 592.24  on 707  degrees of freedom
AIC: 624.24

Number of Fisher Scoring iterations: 5
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Online Communities
                       LR Chisq Df Pr(>Chisq)
Income                   8.7773  7     0.2690
Ethnicity                3.0724  5     0.6888
`English Difficulties`   4.2641  3     0.2343
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Income                 1.325827  7        1.020350
Ethnicity              1.376986  5        1.032507
`English Difficulties` 1.277129  3        1.041612

Source of Information: Health Website association with income after controlling for ethnicity.

qol_1 <- qol |>filter(Age >=50) |>
  select(`Health Website`,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(`Health Website`~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Health Website` ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                      -0.5791     0.3412  -1.697  0.08961 .  
Income$10,000 - $19,999           0.3790     0.3584   1.058  0.29025    
Income$20,000 - $29,999           0.1019     0.4168   0.245  0.80680    
Income$30,000 - $39,999           0.6505     0.3614   1.800  0.07187 .  
Income$40,000 - $49,999           0.2670     0.3892   0.686  0.49269    
Income$50,000 - $59,999           1.1734     0.3800   3.088  0.00201 ** 
Income$60,000 - $69,999           0.3058     0.4146   0.738  0.46077    
Income$70,000 and over            1.2548     0.3017   4.160 3.19e-05 ***
EthnicityAsian Indian            -0.1206     0.2716  -0.444  0.65705    
EthnicityFilipino                 0.4944     0.3205   1.542  0.12297    
EthnicityKorean                  -0.5106     0.2581  -1.978  0.04788 *  
EthnicityOther                    0.6469     0.3884   1.665  0.09581 .  
EthnicityVietnamese              -0.4972     0.2383  -2.086  0.03694 *  
`English Difficulties`Much       -0.6411     0.2419  -2.650  0.00806 ** 
`English Difficulties`Not much   -0.5409     0.2214  -2.443  0.01458 *  
`English Difficulties`Very much  -1.1101     0.2749  -4.039 5.37e-05 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 950.14  on 722  degrees of freedom
Residual deviance: 859.13  on 707  degrees of freedom
AIC: 891.13

Number of Fisher Scoring iterations: 4
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Health Website
                       LR Chisq Df Pr(>Chisq)    
Income                   34.633  7  1.311e-05 ***
Ethnicity                17.853  5  0.0031368 ** 
`English Difficulties`   18.116  3  0.0004164 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Income                 1.265151  7        1.016941
Ethnicity              1.334244  5        1.029256
`English Difficulties` 1.219501  3        1.033627

Other sources of information

qol |> filter(Age >=50) |> select(`Health Info Discription`) |> group_by(`Health Info Discription`) |> summarize(n=n())
# A tibble: 25 × 2
   `Health Info Discription`     n
   <fct>                     <int>
 1 books and radio               1
 2 CDC, NIH-NLM                  1
 3 church                        1
 4 Don't know                    1
 5 Dr. Oz show                   1
 6 Family Doctor                 2
 7 From work                     1
 8 Health & News XXX             1
 9 Internet, google              1
10 Korean Newspaper              1
# ℹ 15 more rows

Health Care Access and Utilization

We will use a model comparison approach to determine whether accounting for Asian ethnicity will improve model performance. The model of choice will be logistic regression for the following response variables: Physical check up, dental check up, urgent care, and folk medicine.

Physical check up

mod2 <- glm(`Physical Check-up`~Income + Age + Gender + `Health Insurance` + `Dental Insurance`,
            data=qol,
            family="binomial")

mod3 <- glm(`Physical Check-up`~Income + Age + Gender + `Health Insurance` + `Dental Insurance` + Ethnicity,
            data=qol,
            family="binomial")
summary(mod2)

Call:
glm(formula = `Physical Check-up` ~ Income + Age + Gender + `Health Insurance` + 
    `Dental Insurance`, family = "binomial", data = qol)

Coefficients:
                         Estimate Std. Error z value Pr(>|z|)    
(Intercept)             -1.791676   0.221500  -8.089 6.02e-16 ***
Income$10,000 - $19,999 -0.165434   0.214035  -0.773   0.4396    
Income$20,000 - $29,999 -0.100058   0.216709  -0.462   0.6443    
Income$30,000 - $39,999  0.071347   0.218307   0.327   0.7438    
Income$40,000 - $49,999 -0.113657   0.222478  -0.511   0.6094    
Income$50,000 - $59,999  0.183865   0.228487   0.805   0.4210    
Income$60,000 - $69,999 -0.150382   0.220380  -0.682   0.4950    
Income$70,000 and over   0.468626   0.172532   2.716   0.0066 ** 
Age                      0.027938   0.003073   9.092  < 2e-16 ***
GenderMale              -0.605188   0.098124  -6.168 6.94e-10 ***
`Health Insurance`Yes    1.376535   0.148848   9.248  < 2e-16 ***
`Dental Insurance`Yes    0.634931   0.114134   5.563 2.65e-08 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2948.2  on 2340  degrees of freedom
Residual deviance: 2563.2  on 2329  degrees of freedom
  (268 observations deleted due to missingness)
AIC: 2587.2

Number of Fisher Scoring iterations: 4
car::vif(mod2)
                       GVIF Df GVIF^(1/(2*Df))
Income             1.251830  7        1.016173
Age                1.045017  1        1.022261
Gender             1.031051  1        1.015407
`Health Insurance` 1.217957  1        1.103611
`Dental Insurance` 1.381205  1        1.175247
car::Anova(mod2) %>% round(3)
Analysis of Deviance Table (Type II tests)

Response: Physical Check-up
                   LR Chisq Df Pr(>Chisq)    
Income               25.851  7      0.001 ***
Age                  88.724  1     <2e-16 ***
Gender               38.644  1     <2e-16 ***
`Health Insurance`   90.705  1     <2e-16 ***
`Dental Insurance`   30.726  1     <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod3)

Call:
glm(formula = `Physical Check-up` ~ Income + Age + Gender + `Health Insurance` + 
    `Dental Insurance` + Ethnicity, family = "binomial", data = qol)

Coefficients:
                         Estimate Std. Error z value Pr(>|z|)    
(Intercept)             -1.852115   0.238185  -7.776 7.49e-15 ***
Income$10,000 - $19,999 -0.174121   0.215485  -0.808 0.419066    
Income$20,000 - $29,999 -0.126341   0.221148  -0.571 0.567799    
Income$30,000 - $39,999  0.077850   0.222946   0.349 0.726948    
Income$40,000 - $49,999 -0.117466   0.226777  -0.518 0.604473    
Income$50,000 - $59,999  0.282262   0.231499   1.219 0.222738    
Income$60,000 - $69,999 -0.032230   0.223516  -0.144 0.885347    
Income$70,000 and over   0.590740   0.174999   3.376 0.000736 ***
Age                      0.029034   0.003129   9.279  < 2e-16 ***
GenderMale              -0.625762   0.101055  -6.192 5.93e-10 ***
`Health Insurance`Yes    1.407716   0.150764   9.337  < 2e-16 ***
`Dental Insurance`Yes    0.520273   0.117424   4.431 9.39e-06 ***
EthnicityAsian Indian    0.017213   0.145624   0.118 0.905908    
EthnicityFilipino        0.340001   0.198125   1.716 0.086144 .  
EthnicityKorean         -0.532275   0.146953  -3.622 0.000292 ***
EthnicityOther          -0.135731   0.231250  -0.587 0.557241    
EthnicityVietnamese      0.459230   0.155465   2.954 0.003138 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2948.2  on 2340  degrees of freedom
Residual deviance: 2519.3  on 2324  degrees of freedom
  (268 observations deleted due to missingness)
AIC: 2553.3

Number of Fisher Scoring iterations: 4
car::vif(mod3)
                       GVIF Df GVIF^(1/(2*Df))
Income             1.397966  7        1.024219
Age                1.063751  1        1.031383
Gender             1.071561  1        1.035162
`Health Insurance` 1.229949  1        1.109031
`Dental Insurance` 1.431618  1        1.196502
Ethnicity          1.229986  5        1.020916
car::Anova(mod3) %>% round(3)
Analysis of Deviance Table (Type II tests)

Response: Physical Check-up
                   LR Chisq Df Pr(>Chisq)    
Income               33.852  7  < 2.2e-16 ***
Age                  92.732  1  < 2.2e-16 ***
Gender               38.996  1  < 2.2e-16 ***
`Health Insurance`   92.711  1  < 2.2e-16 ***
`Dental Insurance`   19.461  1  < 2.2e-16 ***
Ethnicity            43.845  5  < 2.2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(mod2,mod3,test="LRT")
Analysis of Deviance Table

Model 1: `Physical Check-up` ~ Income + Age + Gender + `Health Insurance` + 
    `Dental Insurance`
Model 2: `Physical Check-up` ~ Income + Age + Gender + `Health Insurance` + 
    `Dental Insurance` + Ethnicity
  Resid. Df Resid. Dev Df Deviance Pr(>Chi)    
1      2329     2563.2                         
2      2324     2519.3  5   43.845 2.49e-08 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
data.frame(BIC_mod2=BIC(mod2), BIC_mod3=BIC(mod3)) |> mutate(Diff=BIC_mod3-BIC_mod2)
  BIC_mod2 BIC_mod3      Diff
1  2656.26 2651.206 -5.053363

The ethnicity model has a lower BIC and residual deviance, which implies better model performance compared to the model without the ethnicity included.

Dichotomized Income

mod2 <- glm(`Physical Check-up`~Income_median + Age + Gender + `Health Insurance` + `Dental Insurance`,
            data=qol,
            family="binomial")

mod3 <- glm(`Physical Check-up`~Income_median + Age + Gender + `Health Insurance` + `Dental Insurance` + Ethnicity,
            data=qol,
            family="binomial")
summary(mod2)

Call:
glm(formula = `Physical Check-up` ~ Income_median + Age + Gender + 
    `Health Insurance` + `Dental Insurance`, family = "binomial", 
    data = qol)

Coefficients:
                      Estimate Std. Error z value Pr(>|z|)    
(Intercept)           -1.84870    0.19114  -9.672  < 2e-16 ***
Income_medianAbove     0.36072    0.10508   3.433 0.000598 ***
Age                    0.02801    0.00306   9.154  < 2e-16 ***
GenderMale            -0.58198    0.09749  -5.970 2.38e-09 ***
`Health Insurance`Yes  1.37667    0.14743   9.338  < 2e-16 ***
`Dental Insurance`Yes  0.68527    0.11220   6.108 1.01e-09 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2948.2  on 2340  degrees of freedom
Residual deviance: 2577.3  on 2335  degrees of freedom
  (268 observations deleted due to missingness)
AIC: 2589.3

Number of Fisher Scoring iterations: 4
car::vif(mod2)
     Income_median                Age             Gender `Health Insurance` 
          1.181987           1.036519           1.024472           1.202153 
`Dental Insurance` 
          1.343688 
car::Anova(mod2) %>% round(3)
Analysis of Deviance Table (Type II tests)

Response: Physical Check-up
                   LR Chisq Df Pr(>Chisq)    
Income_median        11.748  1      0.001 ***
Age                  89.891  1     <2e-16 ***
Gender               36.139  1     <2e-16 ***
`Health Insurance`   92.365  1     <2e-16 ***
`Dental Insurance`   37.065  1     <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod3)

Call:
glm(formula = `Physical Check-up` ~ Income_median + Age + Gender + 
    `Health Insurance` + `Dental Insurance` + Ethnicity, family = "binomial", 
    data = qol)

Coefficients:
                       Estimate Std. Error z value Pr(>|z|)    
(Intercept)           -1.906706   0.209210  -9.114  < 2e-16 ***
Income_medianAbove     0.464116   0.109133   4.253 2.11e-05 ***
Age                    0.029130   0.003114   9.355  < 2e-16 ***
GenderMale            -0.604207   0.100349  -6.021 1.73e-09 ***
`Health Insurance`Yes  1.404308   0.149320   9.405  < 2e-16 ***
`Dental Insurance`Yes  0.583308   0.115090   5.068 4.01e-07 ***
EthnicityAsian Indian  0.039877   0.144220   0.277 0.782162    
EthnicityFilipino      0.335561   0.197416   1.700 0.089175 .  
EthnicityKorean       -0.514733   0.145317  -3.542 0.000397 ***
EthnicityOther        -0.133909   0.228354  -0.586 0.557601    
EthnicityVietnamese    0.448860   0.154070   2.913 0.003576 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2948.2  on 2340  degrees of freedom
Residual deviance: 2535.1  on 2330  degrees of freedom
  (268 observations deleted due to missingness)
AIC: 2557.1

Number of Fisher Scoring iterations: 4
car::vif(mod3)
                       GVIF Df GVIF^(1/(2*Df))
Income_median      1.251194  1        1.118568
Age                1.053543  1        1.026423
Gender             1.064604  1        1.031796
`Health Insurance` 1.213146  1        1.101429
`Dental Insurance` 1.385858  1        1.177225
Ethnicity          1.169075  5        1.015744
car::Anova(mod3) %>% round(3)
Analysis of Deviance Table (Type II tests)

Response: Physical Check-up
                   LR Chisq Df Pr(>Chisq)    
Income_median        18.078  1  < 2.2e-16 ***
Age                  94.271  1  < 2.2e-16 ***
Gender               36.813  1  < 2.2e-16 ***
`Health Insurance`   93.974  1  < 2.2e-16 ***
`Dental Insurance`   25.478  1  < 2.2e-16 ***
Ethnicity            42.175  5  < 2.2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(mod2,mod3,test="LRT")
Analysis of Deviance Table

Model 1: `Physical Check-up` ~ Income_median + Age + Gender + `Health Insurance` + 
    `Dental Insurance`
Model 2: `Physical Check-up` ~ Income_median + Age + Gender + `Health Insurance` + 
    `Dental Insurance` + Ethnicity
  Resid. Df Resid. Dev Df Deviance Pr(>Chi)    
1      2335     2577.3                         
2      2330     2535.1  5   42.175 5.43e-08 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
data.frame(BIC_mod2=BIC(mod2), BIC_mod3=BIC(mod3)) |> mutate(Diff=BIC_mod3-BIC_mod2)
  BIC_mod2 BIC_mod3      Diff
1 2623.813  2620.43 -3.382989

We now calculate the odds ratios and 95% confidence intervals.

OR <- exp(coef(mod3))
OR_CI <- exp(confint(mod3))
Waiting for profiling to be done...
OR_df <- data.frame(estimate = OR, LCL=OR_CI[,1], UCL = OR_CI[,2])
OR_df["Age",] <- OR_df["Age",]^10
OR_df
                       estimate        LCL       UCL
(Intercept)           0.1485690 0.09816799 0.2230073
Income_medianAbove    1.5906082 1.28440787 1.9704538
Age                   1.3381718 1.25963886 1.4232556
GenderMale            0.5465076 0.44859315 0.6648808
`Health Insurance`Yes 4.0727073 3.04696861 5.4732754
`Dental Insurance`Yes 1.7919563 1.42978189 2.2453300
EthnicityAsian Indian 1.0406829 0.78442755 1.3809984
EthnicityFilipino     1.3987252 0.95464933 2.0719093
EthnicityKorean       0.5976604 0.44918996 0.7942013
EthnicityOther        0.8746696 0.56135515 1.3758755
EthnicityVietnamese   1.5665256 1.15976512 2.1223754

Dental check up

mod2 <- glm(`Dentist Check-up`~Income + Age + Gender + `Health Insurance` + `Dental Insurance`,
            data=qol,
            family="binomial")

mod3 <- glm(`Dentist Check-up`~Income + Age + Gender + `Health Insurance` + `Dental Insurance` + Ethnicity,
            data=qol,
            family="binomial")
summary(mod2)

Call:
glm(formula = `Dentist Check-up` ~ Income + Age + Gender + `Health Insurance` + 
    `Dental Insurance`, family = "binomial", data = qol)

Coefficients:
                         Estimate Std. Error z value Pr(>|z|)    
(Intercept)             -1.564608   0.218250  -7.169 7.56e-13 ***
Income$10,000 - $19,999 -0.355973   0.215685  -1.650 0.098856 .  
Income$20,000 - $29,999 -0.119991   0.215247  -0.557 0.577215    
Income$30,000 - $39,999  0.197338   0.212110   0.930 0.352186    
Income$40,000 - $49,999 -0.029866   0.218651  -0.137 0.891355    
Income$50,000 - $59,999  0.466839   0.223983   2.084 0.037136 *  
Income$60,000 - $69,999 -0.130191   0.216663  -0.601 0.547913    
Income$70,000 and over   0.548444   0.167810   3.268 0.001082 ** 
Age                      0.016451   0.002879   5.715 1.10e-08 ***
GenderMale              -0.611567   0.095164  -6.426 1.31e-10 ***
`Health Insurance`Yes    0.540154   0.151323   3.570 0.000358 ***
`Dental Insurance`Yes    1.399448   0.109933  12.730  < 2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 3169.7  on 2332  degrees of freedom
Residual deviance: 2696.3  on 2321  degrees of freedom
  (276 observations deleted due to missingness)
AIC: 2720.3

Number of Fisher Scoring iterations: 4
car::vif(mod2)
                       GVIF Df GVIF^(1/(2*Df))
Income             1.212765  7        1.013874
Age                1.049007  1        1.024210
Gender             1.034115  1        1.016914
`Health Insurance` 1.188875  1        1.090355
`Dental Insurance` 1.348203  1        1.161122
car::Anova(mod2) %>% round(3)
Analysis of Deviance Table (Type II tests)

Response: Dentist Check-up
                   LR Chisq Df Pr(>Chisq)    
Income               43.514  7  < 2.2e-16 ***
Age                  33.298  1  < 2.2e-16 ***
Gender               42.036  1  < 2.2e-16 ***
`Health Insurance`   13.047  1  < 2.2e-16 ***
`Dental Insurance`  168.903  1  < 2.2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod3)

Call:
glm(formula = `Dentist Check-up` ~ Income + Age + Gender + `Health Insurance` + 
    `Dental Insurance` + Ethnicity, family = "binomial", data = qol)

Coefficients:
                         Estimate Std. Error z value Pr(>|z|)    
(Intercept)             -1.227465   0.233222  -5.263 1.42e-07 ***
Income$10,000 - $19,999 -0.502910   0.218675  -2.300 0.021459 *  
Income$20,000 - $29,999 -0.320628   0.218282  -1.469 0.141869    
Income$30,000 - $39,999  0.063815   0.215561   0.296 0.767199    
Income$40,000 - $49,999 -0.186746   0.222172  -0.841 0.400602    
Income$50,000 - $59,999  0.421417   0.225512   1.869 0.061663 .  
Income$60,000 - $69,999 -0.117850   0.220987  -0.533 0.593832    
Income$70,000 and over   0.633374   0.170046   3.725 0.000196 ***
Age                      0.015498   0.002935   5.281 1.29e-07 ***
GenderMale              -0.503110   0.098166  -5.125 2.97e-07 ***
`Health Insurance`Yes    0.572604   0.153190   3.738 0.000186 ***
`Dental Insurance`Yes    1.391181   0.113559  12.251  < 2e-16 ***
EthnicityAsian Indian   -1.062227   0.144800  -7.336 2.20e-13 ***
EthnicityFilipino       -0.031389   0.189558  -0.166 0.868478    
EthnicityKorean         -0.448159   0.148279  -3.022 0.002508 ** 
EthnicityOther          -0.202173   0.234423  -0.862 0.388452    
EthnicityVietnamese     -0.011413   0.149074  -0.077 0.938975    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 3169.7  on 2332  degrees of freedom
Residual deviance: 2622.4  on 2316  degrees of freedom
  (276 observations deleted due to missingness)
AIC: 2656.4

Number of Fisher Scoring iterations: 4
car::vif(mod3)
                       GVIF Df GVIF^(1/(2*Df))
Income             1.378711  7        1.023204
Age                1.058330  1        1.028752
Gender             1.065155  1        1.032063
`Health Insurance` 1.190317  1        1.091017
`Dental Insurance` 1.396124  1        1.181577
Ethnicity          1.280598  5        1.025041
car::Anova(mod3) %>% round(3)
Analysis of Deviance Table (Type II tests)

Response: Dentist Check-up
                   LR Chisq Df Pr(>Chisq)    
Income               62.672  7  < 2.2e-16 ***
Age                  28.263  1  < 2.2e-16 ***
Gender               26.512  1  < 2.2e-16 ***
`Health Insurance`   14.312  1  < 2.2e-16 ***
`Dental Insurance`  156.605  1  < 2.2e-16 ***
Ethnicity            73.873  5  < 2.2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(mod2,mod3,test="LRT")
Analysis of Deviance Table

Model 1: `Dentist Check-up` ~ Income + Age + Gender + `Health Insurance` + 
    `Dental Insurance`
Model 2: `Dentist Check-up` ~ Income + Age + Gender + `Health Insurance` + 
    `Dental Insurance` + Ethnicity
  Resid. Df Resid. Dev Df Deviance  Pr(>Chi)    
1      2321     2696.3                          
2      2316     2622.4  5   73.873 1.599e-14 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
data.frame(BIC_mod2=BIC(mod2), BIC_mod3=BIC(mod3)) |> mutate(Diff=BIC_mod3-BIC_mod2)
  BIC_mod2 BIC_mod3      Diff
1 2789.363 2754.264 -35.09842

The ethnicity model has a lower BIC and residual deviance, which implies better model performance compared to the model without the ethnicity included.

Dichotomized Income

mod2 <- glm(`Dentist Check-up`~Income_median + Age + Gender + `Health Insurance` + `Dental Insurance`,
            data=qol,
            family="binomial")

mod3 <- glm(`Dentist Check-up`~Income_median + Age + Gender + `Health Insurance` + `Dental Insurance` + Ethnicity,
            data=qol,
            family="binomial")
summary(mod2)

Call:
glm(formula = `Dentist Check-up` ~ Income_median + Age + Gender + 
    `Health Insurance` + `Dental Insurance`, family = "binomial", 
    data = qol)

Coefficients:
                       Estimate Std. Error z value Pr(>|z|)    
(Intercept)           -1.589269   0.186753  -8.510  < 2e-16 ***
Income_medianAbove     0.385192   0.100098   3.848 0.000119 ***
Age                    0.016350   0.002853   5.730 1.00e-08 ***
GenderMale            -0.578529   0.094179  -6.143 8.11e-10 ***
`Health Insurance`Yes  0.549049   0.149446   3.674 0.000239 ***
`Dental Insurance`Yes  1.462856   0.108247  13.514  < 2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 3169.7  on 2332  degrees of freedom
Residual deviance: 2725.1  on 2327  degrees of freedom
  (276 observations deleted due to missingness)
AIC: 2737.1

Number of Fisher Scoring iterations: 4
car::vif(mod2)
     Income_median                Age             Gender `Health Insurance` 
          1.158003           1.040251           1.026058           1.175117 
`Dental Insurance` 
          1.325233 
car::Anova(mod2) %>% round(3)
Analysis of Deviance Table (Type II tests)

Response: Dentist Check-up
                   LR Chisq Df Pr(>Chisq)    
Income_median        14.681  1  < 2.2e-16 ***
Age                  33.467  1  < 2.2e-16 ***
Gender               38.302  1  < 2.2e-16 ***
`Health Insurance`   13.836  1  < 2.2e-16 ***
`Dental Insurance`  191.913  1  < 2.2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod3)

Call:
glm(formula = `Dentist Check-up` ~ Income_median + Age + Gender + 
    `Health Insurance` + `Dental Insurance` + Ethnicity, family = "binomial", 
    data = qol)

Coefficients:
                       Estimate Std. Error z value Pr(>|z|)    
(Intercept)           -1.367962   0.204293  -6.696 2.14e-11 ***
Income_medianAbove     0.549783   0.105148   5.229 1.71e-07 ***
Age                    0.015411   0.002906   5.304 1.13e-07 ***
GenderMale            -0.476130   0.097049  -4.906 9.29e-07 ***
`Health Insurance`Yes  0.565850   0.150817   3.752 0.000176 ***
`Dental Insurance`Yes  1.467219   0.111740  13.131  < 2e-16 ***
EthnicityAsian Indian -0.997668   0.142371  -7.008 2.43e-12 ***
EthnicityFilipino     -0.034805   0.188211  -0.185 0.853286    
EthnicityKorean       -0.408149   0.145987  -2.796 0.005177 ** 
EthnicityOther        -0.170972   0.229376  -0.745 0.456042    
EthnicityVietnamese   -0.014333   0.146971  -0.098 0.922314    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 3169.7  on 2332  degrees of freedom
Residual deviance: 2657.8  on 2322  degrees of freedom
  (276 observations deleted due to missingness)
AIC: 2679.8

Number of Fisher Scoring iterations: 4
car::vif(mod3)
                       GVIF Df GVIF^(1/(2*Df))
Income_median      1.238623  1        1.112934
Age                1.050456  1        1.024918
Gender             1.058098  1        1.028639
`Health Insurance` 1.174017  1        1.083520
`Dental Insurance` 1.375509  1        1.172821
Ethnicity          1.202686  5        1.018627
car::Anova(mod3) %>% round(3)
Analysis of Deviance Table (Type II tests)

Response: Dentist Check-up
                   LR Chisq Df Pr(>Chisq)    
Income_median        27.269  1  < 2.2e-16 ***
Age                  28.493  1  < 2.2e-16 ***
Gender               24.255  1  < 2.2e-16 ***
`Health Insurance`   14.423  1  < 2.2e-16 ***
`Dental Insurance`  181.610  1  < 2.2e-16 ***
Ethnicity            67.302  5  < 2.2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(mod2,mod3,test="LRT")
Analysis of Deviance Table

Model 1: `Dentist Check-up` ~ Income_median + Age + Gender + `Health Insurance` + 
    `Dental Insurance`
Model 2: `Dentist Check-up` ~ Income_median + Age + Gender + `Health Insurance` + 
    `Dental Insurance` + Ethnicity
  Resid. Df Resid. Dev Df Deviance  Pr(>Chi)    
1      2327     2725.1                          
2      2322     2657.8  5   67.302 3.729e-13 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
data.frame(BIC_mod2=BIC(mod2), BIC_mod3=BIC(mod3)) |> mutate(Diff=BIC_mod3-BIC_mod2)
  BIC_mod2 BIC_mod3      Diff
1 2771.666 2743.139 -28.52748

We now calculate the odds ratios and 95% confidence intervals.

OR <- exp(coef(mod3))
OR_CI <- exp(confint(mod3))
Waiting for profiling to be done...
OR_df <- data.frame(estimate = OR, LCL=OR_CI[,1], UCL = OR_CI[,2])
OR_df["Age",] <- OR_df["Age",]^10
OR_df
                       estimate       LCL       UCL
(Intercept)           0.2546253 0.1699903 0.3788036
Income_medianAbove    1.7328772 1.4102079 2.1299004
Age                   1.1666235 1.1022304 1.2352627
GenderMale            0.6211829 0.5133304 0.7510426
`Health Insurance`Yes 1.7609435 1.3129853 2.3725899
`Dental Insurance`Yes 4.3371588 3.4885461 5.4068204
EthnicityAsian Indian 0.3687383 0.2784854 0.4867069
EthnicityFilipino     0.9657933 0.6696204 1.4013785
EthnicityKorean       0.6648799 0.4991349 0.8848177
EthnicityOther        0.8428449 0.5393305 1.3269184
EthnicityVietnamese   0.9857697 0.7390772 1.3152478

Urgent Care

mod2 <- glm(`Urgentcare`~Income + Age + Gender + `Health Insurance` + `Dental Insurance`,
            data=qol,
            family="binomial")

mod3 <- glm(`Urgentcare`~Income + Age + Gender + `Health Insurance` + `Dental Insurance` + Ethnicity,
            data=qol,
            family="binomial")
summary(mod2)

Call:
glm(formula = Urgentcare ~ Income + Age + Gender + `Health Insurance` + 
    `Dental Insurance`, family = "binomial", data = qol)

Coefficients:
                         Estimate Std. Error z value Pr(>|z|)    
(Intercept)             -2.628813   0.285621  -9.204  < 2e-16 ***
Income$10,000 - $19,999  0.103635   0.266389   0.389  0.69725    
Income$20,000 - $29,999  0.291749   0.259072   1.126  0.26011    
Income$30,000 - $39,999 -0.239587   0.278005  -0.862  0.38879    
Income$40,000 - $49,999  0.163175   0.266674   0.612  0.54061    
Income$50,000 - $59,999 -0.012392   0.275700  -0.045  0.96415    
Income$60,000 - $69,999  0.049139   0.267143   0.184  0.85406    
Income$70,000 and over  -0.090993   0.209564  -0.434  0.66414    
Age                      0.009455   0.003400   2.781  0.00542 ** 
GenderMale               0.046069   0.111497   0.413  0.67947    
`Health Insurance`Yes    0.461500   0.208546   2.213  0.02690 *  
`Dental Insurance`Yes    0.365912   0.137902   2.653  0.00797 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2134.9  on 2324  degrees of freedom
Residual deviance: 2104.7  on 2313  degrees of freedom
  (284 observations deleted due to missingness)
AIC: 2128.7

Number of Fisher Scoring iterations: 4
car::vif(mod2)
                       GVIF Df GVIF^(1/(2*Df))
Income             1.244903  7        1.015770
Age                1.025471  1        1.012656
Gender             1.012255  1        1.006109
`Health Insurance` 1.192892  1        1.092196
`Dental Insurance` 1.381201  1        1.175245
car::Anova(mod2) %>% round(3)
Analysis of Deviance Table (Type II tests)

Response: Urgentcare
                   LR Chisq Df Pr(>Chisq)   
Income                5.677  7      0.578   
Age                   7.663  1      0.006 **
Gender                0.171  1      0.680   
`Health Insurance`    5.203  1      0.023 * 
`Dental Insurance`    7.218  1      0.007 **
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod3)

Call:
glm(formula = Urgentcare ~ Income + Age + Gender + `Health Insurance` + 
    `Dental Insurance` + Ethnicity, family = "binomial", data = qol)

Coefficients:
                         Estimate Std. Error z value Pr(>|z|)    
(Intercept)             -3.029825   0.310965  -9.743  < 2e-16 ***
Income$10,000 - $19,999  0.143040   0.268911   0.532  0.59478    
Income$20,000 - $29,999  0.244280   0.262371   0.931  0.35183    
Income$30,000 - $39,999 -0.308454   0.281026  -1.098  0.27238    
Income$40,000 - $49,999  0.098707   0.269453   0.366  0.71412    
Income$50,000 - $59,999 -0.038185   0.278140  -0.137  0.89080    
Income$60,000 - $69,999  0.056761   0.268558   0.211  0.83261    
Income$70,000 and over  -0.053120   0.210768  -0.252  0.80102    
Age                      0.009016   0.003459   2.607  0.00915 ** 
GenderMale               0.072787   0.114311   0.637  0.52429    
`Health Insurance`Yes    0.468559   0.208911   2.243  0.02491 *  
`Dental Insurance`Yes    0.339428   0.140732   2.412  0.01587 *  
EthnicityAsian Indian    0.357767   0.180361   1.984  0.04730 *  
EthnicityFilipino        0.624667   0.207249   3.014  0.00258 ** 
EthnicityKorean          0.511938   0.182607   2.803  0.00506 ** 
EthnicityOther           0.495625   0.263786   1.879  0.06026 .  
EthnicityVietnamese      0.662442   0.177498   3.732  0.00019 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2134.9  on 2324  degrees of freedom
Residual deviance: 2087.1  on 2308  degrees of freedom
  (284 observations deleted due to missingness)
AIC: 2121.1

Number of Fisher Scoring iterations: 4
car::vif(mod3)
                       GVIF Df GVIF^(1/(2*Df))
Income             1.382138  7        1.023386
Age                1.038338  1        1.018989
Gender             1.055916  1        1.027578
`Health Insurance` 1.191390  1        1.091508
`Dental Insurance` 1.428024  1        1.195000
Ethnicity          1.222646  5        1.020305
car::Anova(mod3) %>% round(3)
Analysis of Deviance Table (Type II tests)

Response: Urgentcare
                   LR Chisq Df Pr(>Chisq)   
Income                5.118  7      0.646   
Age                   6.732  1      0.009 **
Gender                0.405  1      0.524   
`Health Insurance`    5.347  1      0.021 * 
`Dental Insurance`    5.941  1      0.015 * 
Ethnicity            17.629  5      0.003 **
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(mod2,mod3,test="LRT")
Analysis of Deviance Table

Model 1: Urgentcare ~ Income + Age + Gender + `Health Insurance` + `Dental Insurance`
Model 2: Urgentcare ~ Income + Age + Gender + `Health Insurance` + `Dental Insurance` + 
    Ethnicity
  Resid. Df Resid. Dev Df Deviance Pr(>Chi)   
1      2313     2104.7                        
2      2308     2087.1  5   17.629 0.003449 **
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
data.frame(BIC_mod2=BIC(mod2), BIC_mod3=BIC(mod3)) |> mutate(Diff=BIC_mod3-BIC_mod2)
  BIC_mod2 BIC_mod3     Diff
1 2197.747 2218.875 21.12804

The ethnicity model has a lower residual deviance but higher BIC, which implies that there is no evidence of better model performance when ethnicity is added to the model.

Dichotomized Income

mod2 <- glm(`Urgentcare`~Income_median + Age + Gender + `Health Insurance` + `Dental Insurance`,
            data=qol,
            family="binomial")

mod3 <- glm(`Urgentcare`~Income_median + Age + Gender + `Health Insurance` + `Dental Insurance` + Ethnicity,
            data=qol,
            family="binomial")
summary(mod2)

Call:
glm(formula = Urgentcare ~ Income_median + Age + Gender + `Health Insurance` + 
    `Dental Insurance`, family = "binomial", data = qol)

Coefficients:
                       Estimate Std. Error z value Pr(>|z|)    
(Intercept)           -2.555771   0.245147 -10.425  < 2e-16 ***
Income_medianAbove    -0.116586   0.120051  -0.971  0.33148    
Age                    0.009257   0.003387   2.733  0.00627 ** 
GenderMale             0.041917   0.111215   0.377  0.70625    
`Health Insurance`Yes  0.462895   0.207567   2.230  0.02574 *  
`Dental Insurance`Yes  0.346721   0.135512   2.559  0.01051 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2134.9  on 2324  degrees of freedom
Residual deviance: 2109.5  on 2319  degrees of freedom
  (284 observations deleted due to missingness)
AIC: 2121.5

Number of Fisher Scoring iterations: 4
car::vif(mod2)
     Income_median                Age             Gender `Health Insurance` 
          1.180501           1.020747           1.009353           1.183367 
`Dental Insurance` 
          1.336646 
car::Anova(mod2) %>% round(3)
Analysis of Deviance Table (Type II tests)

Response: Urgentcare
                   LR Chisq Df Pr(>Chisq)   
Income_median         0.943  1      0.332   
Age                   7.408  1      0.006 **
Gender                0.142  1      0.706   
`Health Insurance`    5.291  1      0.021 * 
`Dental Insurance`    6.701  1      0.010 **
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod3)

Call:
glm(formula = Urgentcare ~ Income_median + Age + Gender + `Health Insurance` + 
    `Dental Insurance` + Ethnicity, family = "binomial", data = qol)

Coefficients:
                       Estimate Std. Error z value Pr(>|z|)    
(Intercept)           -2.966105   0.272723 -10.876  < 2e-16 ***
Income_medianAbove    -0.052149   0.123518  -0.422 0.672879    
Age                    0.008862   0.003448   2.570 0.010163 *  
GenderMale             0.068473   0.113922   0.601 0.547805    
`Health Insurance`Yes  0.462083   0.207861   2.223 0.026213 *  
`Dental Insurance`Yes  0.313955   0.138033   2.274 0.022937 *  
EthnicityAsian Indian  0.339299   0.179341   1.892 0.058501 .  
EthnicityFilipino      0.625998   0.206980   3.024 0.002491 ** 
EthnicityKorean        0.493661   0.181537   2.719 0.006541 ** 
EthnicityOther         0.485614   0.262280   1.852 0.064096 .  
EthnicityVietnamese    0.650557   0.175978   3.697 0.000218 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2134.9  on 2324  degrees of freedom
Residual deviance: 2092.0  on 2314  degrees of freedom
  (284 observations deleted due to missingness)
AIC: 2114

Number of Fisher Scoring iterations: 4
car::vif(mod3)
                       GVIF Df GVIF^(1/(2*Df))
Income_median      1.240227  1        1.113655
Age                1.032751  1        1.016244
Gender             1.051107  1        1.025235
`Health Insurance` 1.182135  1        1.087260
`Dental Insurance` 1.377205  1        1.173544
Ethnicity          1.162157  5        1.015141
car::Anova(mod3) %>% round(3)
Analysis of Deviance Table (Type II tests)

Response: Urgentcare
                   LR Chisq Df Pr(>Chisq)   
Income_median         0.178  1      0.673   
Age                   6.549  1      0.010 **
Gender                0.361  1      0.548   
`Health Insurance`    5.254  1      0.022 * 
`Dental Insurance`    5.271  1      0.022 * 
Ethnicity            17.423  5      0.004 **
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(mod2,mod3,test="LRT")
Analysis of Deviance Table

Model 1: Urgentcare ~ Income_median + Age + Gender + `Health Insurance` + 
    `Dental Insurance`
Model 2: Urgentcare ~ Income_median + Age + Gender + `Health Insurance` + 
    `Dental Insurance` + Ethnicity
  Resid. Df Resid. Dev Df Deviance Pr(>Chi)   
1      2319     2109.5                        
2      2314     2092.0  5   17.423 0.003763 **
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
data.frame(BIC_mod2=BIC(mod2), BIC_mod3=BIC(mod3)) |> mutate(Diff=BIC_mod3-BIC_mod2)
  BIC_mod2 BIC_mod3    Diff
1 2155.972 2177.306 21.3341

We now calculate the odds ratios and 95% confidence intervals.

OR <- exp(coef(mod3))
OR_CI <- exp(confint(mod3))
Waiting for profiling to be done...
OR_df <- data.frame(estimate = OR, LCL=OR_CI[,1], UCL = OR_CI[,2])
OR_df["Age",] <- OR_df["Age",]^10
OR_df
                        estimate        LCL        UCL
(Intercept)           0.05150351 0.02979701 0.08689002
Income_medianAbove    0.94918706 0.74511073 1.20949077
Age                   1.09266355 1.02104874 1.16891337
GenderMale            1.07087204 0.85625080 1.33860149
`Health Insurance`Yes 1.58737627 1.06756657 2.41698465
`Dental Insurance`Yes 1.36882840 1.04665526 1.79866817
EthnicityAsian Indian 1.40396275 0.98875426 1.99927046
EthnicityFilipino     1.87011201 1.24282179 2.80178534
EthnicityKorean       1.63830274 1.14848360 2.34241550
EthnicityOther        1.62517313 0.95703174 2.68631433
EthnicityVietnamese   1.91660756 1.35999859 2.71361396

Folk medicine

mod2 <- glm(Folkmedicine~Income + Age + Gender + `Health Insurance` + `Dental Insurance`,
            data=qol,
            family="binomial")

mod3 <- glm(Folkmedicine~Income + Age + Gender + `Health Insurance` + `Dental Insurance` + Ethnicity,
            data=qol,
            family="binomial")
summary(mod2)

Call:
glm(formula = Folkmedicine ~ Income + Age + Gender + `Health Insurance` + 
    `Dental Insurance`, family = "binomial", data = qol)

Coefficients:
                         Estimate Std. Error z value Pr(>|z|)    
(Intercept)             -3.382774   0.330715 -10.229  < 2e-16 ***
Income$10,000 - $19,999  0.673935   0.304433   2.214  0.02685 *  
Income$20,000 - $29,999  0.541475   0.321107   1.686  0.09174 .  
Income$30,000 - $39,999  0.864416   0.301175   2.870  0.00410 ** 
Income$40,000 - $49,999  0.388059   0.333190   1.165  0.24415    
Income$50,000 - $59,999  0.573504   0.325026   1.764  0.07765 .  
Income$60,000 - $69,999  0.794680   0.318034   2.499  0.01246 *  
Income$70,000 and over   0.626996   0.263888   2.376  0.01750 *  
Age                      0.026843   0.003763   7.133 9.84e-13 ***
GenderMale              -0.347185   0.126002  -2.755  0.00586 ** 
`Health Insurance`Yes   -0.133492   0.196643  -0.679  0.49723    
`Dental Insurance`Yes    0.048323   0.150114   0.322  0.74752    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 1843.9  on 2309  degrees of freedom
Residual deviance: 1773.3  on 2298  degrees of freedom
  (299 observations deleted due to missingness)
AIC: 1797.3

Number of Fisher Scoring iterations: 5
car::vif(mod2)
                       GVIF Df GVIF^(1/(2*Df))
Income             1.268863  7        1.017154
Age                1.057633  1        1.028413
Gender             1.009714  1        1.004845
`Health Insurance` 1.251371  1        1.118647
`Dental Insurance` 1.434294  1        1.197620
car::Anova(mod2) %>% round(3)
Analysis of Deviance Table (Type II tests)

Response: Folkmedicine
                   LR Chisq Df Pr(>Chisq)    
Income               11.222  7      0.129    
Age                  51.608  1     <2e-16 ***
Gender                7.705  1      0.006 ** 
`Health Insurance`    0.456  1      0.500    
`Dental Insurance`    0.104  1      0.747    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod3)

Call:
glm(formula = Folkmedicine ~ Income + Age + Gender + `Health Insurance` + 
    `Dental Insurance` + Ethnicity, family = "binomial", data = qol)

Coefficients:
                         Estimate Std. Error z value Pr(>|z|)    
(Intercept)             -3.018154   0.347709  -8.680  < 2e-16 ***
Income$10,000 - $19,999  0.611878   0.309753   1.975  0.04823 *  
Income$20,000 - $29,999  0.562372   0.328592   1.711  0.08700 .  
Income$30,000 - $39,999  0.847733   0.308206   2.751  0.00595 ** 
Income$40,000 - $49,999  0.363136   0.340150   1.068  0.28571    
Income$50,000 - $59,999  0.439830   0.331955   1.325  0.18518    
Income$60,000 - $69,999  0.629878   0.324214   1.943  0.05204 .  
Income$70,000 and over   0.451240   0.269132   1.677  0.09361 .  
Age                      0.026241   0.003815   6.878 6.05e-12 ***
GenderMale              -0.301015   0.129537  -2.324  0.02014 *  
`Health Insurance`Yes   -0.106211   0.199708  -0.532  0.59484    
`Dental Insurance`Yes    0.211142   0.155190   1.361  0.17366    
EthnicityAsian Indian   -0.790092   0.201162  -3.928 8.58e-05 ***
EthnicityFilipino       -0.818803   0.250572  -3.268  0.00108 ** 
EthnicityKorean          0.191121   0.162968   1.173  0.24089    
EthnicityOther          -0.623253   0.309280  -2.015  0.04389 *  
EthnicityVietnamese     -1.094267   0.213666  -5.121 3.03e-07 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 1843.9  on 2309  degrees of freedom
Residual deviance: 1711.3  on 2293  degrees of freedom
  (299 observations deleted due to missingness)
AIC: 1745.3

Number of Fisher Scoring iterations: 5
car::vif(mod3)
                       GVIF Df GVIF^(1/(2*Df))
Income             1.382160  7        1.023387
Age                1.052858  1        1.026089
Gender             1.035179  1        1.017437
`Health Insurance` 1.244334  1        1.115497
`Dental Insurance` 1.487271  1        1.219537
Ethnicity          1.167382  5        1.015597
car::Anova(mod3) %>% round(3)
Analysis of Deviance Table (Type II tests)

Response: Folkmedicine
                   LR Chisq Df Pr(>Chisq)    
Income                9.299  7      0.232    
Age                  47.837  1     <2e-16 ***
Gender                5.464  1      0.019 *  
`Health Insurance`    0.280  1      0.596    
`Dental Insurance`    1.870  1      0.171    
Ethnicity            62.007  5     <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(mod2,mod3,test="LRT")
Analysis of Deviance Table

Model 1: Folkmedicine ~ Income + Age + Gender + `Health Insurance` + `Dental Insurance`
Model 2: Folkmedicine ~ Income + Age + Gender + `Health Insurance` + `Dental Insurance` + 
    Ethnicity
  Resid. Df Resid. Dev Df Deviance  Pr(>Chi)    
1      2298     1773.3                          
2      2293     1711.3  5   62.007 4.673e-12 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
data.frame(BIC_mod2=BIC(mod2), BIC_mod3=BIC(mod3)) |> mutate(Diff=BIC_mod3-BIC_mod2)
  BIC_mod2 BIC_mod3      Diff
1  1866.23 1842.948 -23.28243

Dichotomized Income

mod2 <- glm(`Folkmedicine`~Income_median + Age + Gender + `Health Insurance` + `Dental Insurance`,
            data=qol,
            family="binomial")

mod3 <- glm(`Folkmedicine`~Income_median + Age + Gender + `Health Insurance` + `Dental Insurance` + Ethnicity,
            data=qol,
            family="binomial")
summary(mod2)

Call:
glm(formula = Folkmedicine ~ Income_median + Age + Gender + `Health Insurance` + 
    `Dental Insurance`, family = "binomial", data = qol)

Coefficients:
                       Estimate Std. Error z value Pr(>|z|)    
(Intercept)           -2.882715   0.251173 -11.477  < 2e-16 ***
Income_medianAbove     0.130728   0.134526   0.972  0.33117    
Age                    0.026576   0.003696   7.190 6.46e-13 ***
GenderMale            -0.342586   0.125633  -2.727  0.00639 ** 
`Health Insurance`Yes -0.085254   0.195196  -0.437  0.66228    
`Dental Insurance`Yes  0.034114   0.148202   0.230  0.81795    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 1843.9  on 2309  degrees of freedom
Residual deviance: 1783.6  on 2304  degrees of freedom
  (299 observations deleted due to missingness)
AIC: 1795.6

Number of Fisher Scoring iterations: 5
car::vif(mod2)
     Income_median                Age             Gender `Health Insurance` 
          1.200242           1.047522           1.008031           1.239412 
`Dental Insurance` 
          1.404295 
car::Anova(mod2) %>% round(3)
Analysis of Deviance Table (Type II tests)

Response: Folkmedicine
                   LR Chisq Df Pr(>Chisq)    
Income_median         0.946  1      0.331    
Age                  52.339  1     <2e-16 ***
Gender                7.547  1      0.006 ** 
`Health Insurance`    0.189  1      0.663    
`Dental Insurance`    0.053  1      0.818    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod3)

Call:
glm(formula = Folkmedicine ~ Income_median + Age + Gender + `Health Insurance` + 
    `Dental Insurance` + Ethnicity, family = "binomial", data = qol)

Coefficients:
                       Estimate Std. Error z value Pr(>|z|)    
(Intercept)           -2.553090   0.272196  -9.380  < 2e-16 ***
Income_medianAbove    -0.001996   0.138662  -0.014  0.98852    
Age                    0.025806   0.003749   6.884 5.83e-12 ***
GenderMale            -0.292410   0.128999  -2.267  0.02340 *  
`Health Insurance`Yes -0.054648   0.198257  -0.276  0.78282    
`Dental Insurance`Yes  0.191237   0.152394   1.255  0.20952    
EthnicityAsian Indian -0.834703   0.199775  -4.178 2.94e-05 ***
EthnicityFilipino     -0.808877   0.249590  -3.241  0.00119 ** 
EthnicityKorean        0.206709   0.161188   1.282  0.19970    
EthnicityOther        -0.611527   0.307129  -1.991  0.04647 *  
EthnicityVietnamese   -1.057645   0.211557  -4.999 5.75e-07 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 1843.9  on 2309  degrees of freedom
Residual deviance: 1720.6  on 2299  degrees of freedom
  (299 observations deleted due to missingness)
AIC: 1742.6

Number of Fisher Scoring iterations: 5
car::vif(mod3)
                       GVIF Df GVIF^(1/(2*Df))
Income_median      1.236557  1        1.112006
Age                1.038099  1        1.018871
Gender             1.030704  1        1.015236
`Health Insurance` 1.230342  1        1.109208
`Dental Insurance` 1.440654  1        1.200273
Ethnicity          1.101827  5        1.009744
car::Anova(mod3) %>% round(3)
Analysis of Deviance Table (Type II tests)

Response: Folkmedicine
                   LR Chisq Df Pr(>Chisq)    
Income_median         0.000  1      0.989    
Age                  47.813  1     <2e-16 ***
Gender                5.198  1      0.023 *  
`Health Insurance`    0.076  1      0.783    
`Dental Insurance`    1.589  1      0.207    
Ethnicity            62.985  5     <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(mod2,mod3,test="LRT")
Analysis of Deviance Table

Model 1: Folkmedicine ~ Income_median + Age + Gender + `Health Insurance` + 
    `Dental Insurance`
Model 2: Folkmedicine ~ Income_median + Age + Gender + `Health Insurance` + 
    `Dental Insurance` + Ethnicity
  Resid. Df Resid. Dev Df Deviance  Pr(>Chi)    
1      2304     1783.6                          
2      2299     1720.6  5   62.985 2.932e-12 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
data.frame(BIC_mod2=BIC(mod2), BIC_mod3=BIC(mod3)) |> mutate(Diff=BIC_mod3-BIC_mod2)
  BIC_mod2 BIC_mod3      Diff
1 1830.036 1805.776 -24.25993

We now calculate the odds ratios and 95% confidence intervals.

OR <- exp(coef(mod3))
OR_CI <- exp(confint(mod3))
Waiting for profiling to be done...
OR_df <- data.frame(estimate = OR, LCL=OR_CI[,1], UCL = OR_CI[,2])
OR_df["Age",] <- OR_df["Age",]^10
OR_df
                        estimate        LCL       UCL
(Intercept)           0.07784076 0.04517938 0.1314289
Income_medianAbove    0.99800644 0.76053236 1.3101700
Age                   1.29442127 1.20300404 1.3935990
GenderMale            0.74646247 0.57872932 0.9599576
`Health Insurance`Yes 0.94681801 0.64563258 1.4064657
`Dental Insurance`Yes 1.21074657 0.89993929 1.6362559
EthnicityAsian Indian 0.43400351 0.29079316 0.6374857
EthnicityFilipino     0.44535775 0.26751647 0.7144715
EthnicityKorean       1.22962464 0.89609715 1.6866812
EthnicityOther        0.54252167 0.28603435 0.9614947
EthnicityVietnamese   0.34727258 0.22674214 0.5207625